> 백엔드 개발 > 파이썬 튜토리얼 > Python의 정렬 알고리즘은 무엇입니까?

Python의 정렬 알고리즘은 무엇입니까?

王林
풀어 주다: 2023-10-18 09:06:32
원래의
1219명이 탐색했습니다.

Python의 정렬 알고리즘은 무엇입니까?

Python에서 일반적으로 사용되는 정렬 알고리즘에는 버블 정렬, 삽입 정렬, 선택 정렬, 빠른 정렬, 병합 정렬 및 힙 정렬이 포함됩니다. 이러한 정렬 알고리즘의 원리는 아래에 소개되고 해당 코드 예제가 제공됩니다.

  1. 버블 정렬:
    버블 정렬은 간단하고 직관적인 정렬 알고리즘입니다. 정렬할 목록을 반복적으로 탐색하여 인접한 두 요소의 크기를 비교하고 더 큰 요소를 뒤로 이동합니다. 각 반복 중에 가장 큰 요소가 목록 끝까지 "거품"됩니다.
def bubble_sort(arr):
    n = len(arr)
    for i in range(n - 1):
        for j in range(n - 1 - i):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr
로그인 후 복사
  1. 삽입 정렬:
    삽입 정렬의 기본 개념은 정렬된 목록에서 정렬할 요소를 올바른 위치에 하나씩 삽입하는 것입니다. 삽입 정렬은 두 번째 요소부터 시작하여 각 요소를 이전 정렬 목록과 비교하여 적절한 위치에 삽입합니다.
def insertion_sort(arr):
    n = len(arr)
    for i in range(1, n):
        key = arr[i]
        j = i - 1
        while j >= 0 and arr[j] > key:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = key
    return arr
로그인 후 복사
  1. 선택 정렬:
    선택 정렬은 매번 목록을 순회하여 가장 작은 요소를 찾아 현재 위치와 바꿉니다. 전체 목록이 정렬될 때까지 이 과정을 계속 반복합니다.
def selection_sort(arr):
    n = len(arr)
    for i in range(n - 1):
        min_index = i
        for j in range(i + 1, n):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]
    return arr
로그인 후 복사
  1. 빠른 정렬:
    빠른 정렬은 효율적인 정렬 알고리즘입니다. 분할 및 정복이라는 아이디어를 사용하여 목록을 두 개의 하위 목록으로 나눈 다음 하위 목록을 재귀적으로 정렬합니다.
def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quick_sort(left) + middle + quick_sort(right)
로그인 후 복사
  1. 병합 정렬:
    병합 정렬은 목록을 두 개의 하위 목록으로 분할하고 각 하위 목록을 정렬한 다음 정렬된 하위 목록을 함께 병합합니다.
def merge_sort(arr):
    if len(arr) <= 1:
        return arr
    mid = len(arr) // 2
    left = merge_sort(arr[:mid])
    right = merge_sort(arr[mid:])
    return merge(left, right)

def merge(left, right):
    result = []
    i = j = 0
    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    result.extend(left[i:])
    result.extend(right[j:])
    return result
로그인 후 복사
  1. 힙 정렬:
    힙 정렬은 정렬을 위해 이진 힙의 속성을 사용하는 트리 선택 정렬 알고리즘입니다. 힙은 최대 힙과 최소 힙으로 나눌 수 있습니다. 최대 힙의 루트 노드는 가장 큰 요소이고, 최소 힙의 루트 노드는 가장 작은 요소입니다.
def heapify(arr, n, i):
    largest = i
    left = 2 * i + 1
    right = 2 * i + 2
    if left < n and arr[i] < arr[left]:
        largest = left
    if right < n and arr[largest] < arr[right]:
        largest = right
    if largest != i:
        arr[i], arr[largest] = arr[largest], arr[i]
        heapify(arr, n, largest)

def heap_sort(arr):
    n = len(arr)
    for i in range(n // 2 - 1, -1, -1):
        heapify(arr, n, i)
    for i in range(n - 1, 0, -1):
        arr[i], arr[0] = arr[0], arr[i]
        heapify(arr, i, 0)
    return arr
로그인 후 복사

위는 Python에서 일반적으로 사용되는 몇 가지 정렬 알고리즘이며 해당 코드 예제가 제공됩니다. 다양한 정렬 알고리즘은 다양한 상황과 데이터 크기에 적합합니다. 실제 상황에 따라 적절한 정렬 알고리즘을 선택하면 프로그램의 운영 효율성이 향상될 수 있습니다.

위 내용은 Python의 정렬 알고리즘은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿