Python의 선택 정렬 구현에 대한 자세한 설명

PHPz
풀어 주다: 2024-02-03 08:20:23
원래의
963명이 탐색했습니다.

Python의 선택 정렬 구현에 대한 자세한 설명

Python의 선택 정렬 알고리즘에 대한 자세한 설명

선택 정렬은 간단하지만 비효율적인 정렬 알고리즘의 기본 아이디어는 매번 정렬할 시퀀스에서 가장 작은(또는 가장 큰) 요소를 찾는 것입니다. 정렬된 순서가 끝났습니다. 모든 요소가 정렬될 때까지 이 과정을 반복합니다.

선택 정렬 단계는 다음과 같습니다.

  1. 순서를 탐색하여 가장 작은(또는 가장 큰) 요소를 찾습니다.
  2. 가장 작은(또는 가장 큰) 요소를 현재 순회 위치의 요소로 교환합니다.
  3. 전체 시퀀스가 탐색될 때까지 1단계와 2단계를 반복합니다.

선택 정렬 알고리즘을 자세히 설명하고 구체적인 코드 예를 들어보겠습니다.

먼저 선택 정렬을 구현하는 함수를 정의합니다.

def selection_sort(arr): n = len(arr) for i in range(n): # 找到未排序序列中的最小元素的索引 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]
로그인 후 복사

이제 선택 정렬의 효과를 테스트해 보겠습니다.

arr = [64, 25, 12, 22, 11] selection_sort(arr) print("排序后的数组:") for i in range(len(arr)): print(arr[i])
로그인 후 복사

위 코드를 실행하면 출력은 다음과 같습니다.

排序后的数组: 11 12 22 25 64
로그인 후 복사

선택 정렬이 수행되는 것을 볼 수 있습니다. 성공할 것입니다. 배열이 오름차순으로 정렬됩니다.

선택 정렬의 시간 복잡도는 O(n^2)입니다. 여기서 n은 정렬할 시퀀스의 길이입니다. 이는 가장 작은(또는 가장 큰) 요소를 찾기 위해 정렬되지 않은 시퀀스의 모든 요소를 순회해야 할 때마다 n번의 비교를 수행해야 하기 때문입니다. 총 n-1회 순회를 수행해야 하므로 시간 복잡도는 O(n^2)입니다.

선택 정렬은 불안정한 정렬 알고리즘입니다. 즉, 동일한 요소의 상대적 순서가 변경될 수 있습니다. 이는 선택 정렬이 요소의 위치를 지속적으로 교환하여 구현되기 때문입니다. 예를 들어 시퀀스 [3, 1, 3]의 경우 선택 정렬 알고리즘을 사용하여 정렬한 후 가능한 결과는 [1, 3, 3]이며 원래 동일한 요소 3의 상대 위치가 변경되었습니다.

선택 정렬은 덜 효율적이지만 구현은 간단하고 직관적입니다. 정렬할 순서가 작거나 안정성 요구 사항이 높지 않은 등 일부 특정 경우에는 선택 정렬을 간단한 정렬 방법으로 사용할 수 있습니다.

요약하자면, 선택 정렬은 정렬되지 않은 시퀀스에서 가장 작은(또는 가장 큰) 요소를 지속적으로 찾아 현재 순회 위치의 요소와 교환하여 정렬을 완료하는 알고리즘입니다. 구현은 간단하지만 시간 복잡도가 높고 불안정합니다. 실제 응용 프로그램에서 선택 정렬의 사용 시나리오는 상대적으로 제한됩니다.

위 내용은 Python의 선택 정렬 구현에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!