선택 정렬 알고리즘은 배열을 정렬된 부분과 정렬되지 않은 부분의 두 부분으로 나눕니다. 처음에는 정렬된 부분은 비어 있고 정렬되지 않은 부분에는 모든 요소가 포함되어 있습니다. 알고리즘은 정렬되지 않은 부분에서 가장 작은(또는 정렬 순서에 따라 가장 큰) 요소를 찾아 이를 정렬되지 않은 부분의 첫 번째 요소와 바꾸는 방식으로 작동합니다. 이 프로세스는 전체 배열이 정렬될 때까지 계속됩니다.
#Suppose we have the following array: arr = [64, 25, 12, 22, 11]
첫 번째 패스 이후의 배열: [11, 25, 12, 22, 64]
두 번째 패스 이후의 배열: [11, 12, 25, 22, 64]
세 번째 패스 이후의 배열: [11, 12, 22, 25, 64]
최종 정렬 배열: [11, 12, 22, 25, 64]
def selection_sort(arr): # Traverse through all array elements for i in range(len(arr)): # Find the minimum element in the remaining unsorted part min_index = i for j in range(i 1, len(arr)): if arr[j]정렬된 배열: [11, 12, 22, 25, 64]
선택 정렬의 시간 복잡도:
최상의 경우: O(n²)
평균 사례: O(n²)
최악의 경우: O(n²)
선택 정렬은 작은 데이터 세트에서는 잘 수행되지만 시간 복잡도는 O(n²)이므로 대규모 배열에는 적합하지 않습니다. 그러나 선택 정렬이 제자리에 있으므로(추가 메모리가 필요하지 않음) 구현하기 쉽고 메모리가 문제가 되는 경우 유용할 수 있습니다.
장점:
이해하고 구현하기 쉽습니다.
작은 목록에서 좋은 성능을 발휘합니다.
배열을 제자리에 정렬하므로 추가 메모리가 필요하지 않습니다.
단점:
O(n²) 시간 복잡성으로 인해 대규모 데이터 세트에는 비효율적입니다.
안정적인 정렬 알고리즘이 아닙니다. 즉, 동일한 요소가 서로에 대한 순서를 유지하지 못할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3