Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

선택 정렬 Python:가이드

Python 선택 정렬은 목록을 두 개의 작은 목록으로 나눕니다. 하나의 목록은 정렬된 요소를 나타냅니다. 다른 목록에는 정렬되지 않은 요소가 있습니다. 선택 정렬은 각 반복에서 가장 작은 값이나 가장 높은 값을 찾아 해당 값을 정렬된 목록으로 이동합니다.

목록 정렬은 다양한 프로그램에서 일반적인 작업입니다.

다음 예를 고려하십시오. 교사는 가장 최근의 시험에서 학생들이 얼마나 잘했는지에 대해 더 알고 싶어합니다. 교사는 학생의 점수를 오름차순 및 내림차순으로 정렬할 수 있습니다. 이를 통해 가장 높은 점수와 가장 낮은 점수가 무엇인지 쉽게 알 수 있습니다.

Enter, 선택 정렬. 선택 정렬은 목록을 오름차순 또는 내림차순으로 정렬하는 데 사용할 수 있는 알고리즘입니다.

이 가이드에서는 Python에서 선택 정렬 프로그램을 작성하는 방법에 대해 설명합니다. 선택 정렬의 모든 것을 배울 수 있도록 이 가이드 전체에서 예제를 살펴보겠습니다.

Python 선택 정렬이란 무엇입니까?

Python 선택 정렬은 목록에서 최소 요소를 반복적으로 찾고 해당 요소를 목록의 특정 끝으로 이동합니다. 정렬은 배열이 순서대로 정렬될 때까지 계속됩니다. 최대 요소를 찾기 위해 선택 정렬을 지시할 수도 있습니다. 두 가지 접근 방식 모두 목록을 정렬합니다.

선택 정렬은 목록의 첫 번째 요소가 가장 작은 값이라고 가정합니다. 그런 다음 정렬은 해당 값을 두 번째 요소와 비교합니다. 두 번째 요소가 최소값보다 작으면 두 번째 요소가 최소값이 됩니다.

이 프로세스는 목록의 마지막 요소에 도달할 때까지 반복됩니다. 이 요소에 도달하면 정렬되지 않은 목록의 시작 부분에 최소값이 배치됩니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

Python 선택 정렬 가이드

예제를 통해 실행하는 것보다 선택 정렬에 대해 배우는 더 좋은 방법은 없습니다. 학생 성적 목록을 오름차순으로 정렬해 보겠습니다. 다음 정렬되지 않은 목록을 고려하십시오.

73 62 61 69

먼저 목록의 첫 번째 값을 최소 . 선택 정렬을 반복할 때마다 가장 작은 요소를 찾아 정렬된 하위 배열로 이동합니다.

최소 요소를 정렬하는 것은 하나의 옵션입니다. 최대 요소를 정렬하면 선택 정렬이 작동합니다. 그러나 이 예에서는 최소 요소를 사용하고 있습니다.

다음으로 최소값을 두 번째 요소와 비교합니다. 이 요소가 최소값보다 작으면 두 번째 요소가 최소값이 되어야 합니다.

73과 62를 비교할 것입니다. 73은 62보다 크므로 새로운 최소값은 62입니다. 그러면 목록에서 목록의 다른 모든 숫자를 살펴봅니다.

  • 61이 62(최소값)보다 큽니까? 아니요, 그러니 숫자를 바꾸세요. 최소값은 61이 됩니다.
  • 69가 61(최소값)보다 큽니까? 예, 아무 것도 하지 마십시오. 최소 숙박은 61세입니다.

목록은 동일합니다.

73 62 61 69

목록의 끝에 도달하면 최소값을 목록의 시작 부분으로 이동할 수 있습니다.

61 73 62 69

61(최소값)은 목록의 시작 부분으로 이동했고 다른 모든 값은 하나씩 위로 이동했습니다. 모든 요소가 정렬될 때까지 이 과정을 반복합니다.

목록의 각 반복은 다음을 반환합니다.

  1. 73, 62, 61, 69
  2. 61, 73, 62, 69
  3. 61, 62, 73, 69
  4. 61, 62, 69, 73

선택 정렬이 목록의 모든 요소를 ​​확인하면 정렬이 중지됩니다.

정렬된 하위 배열과 정렬되지 않은 하위 배열은 모두 우리에게 보이지 않습니다. 우리의 알고리즘은 우리를 위해 배열을 정렬하고 배열의 정렬되지 않은 부분을 추적합니다.

Python에서 선택 정렬을 수행하는 방법

이제 이론에 익숙해졌습니다. 잘했습니다! 큰 도전이 필요한 때입니다. 우리는 파이썬에서 선택 정렬 알고리즘을 구현할 것입니다. 파이썬 배열을 받아 오름차순으로 정렬하는 프로그램을 작성해 봅시다.

정렬 함수 정의

선택 정렬을 수행하는 Python 함수를 정의하는 것으로 시작하겠습니다.

def sortList(array):
	length = len(array)

	for item in range(length):
		minimum = item

		for i in range(item + 1, length):
			if array[i] < array[minimum]:
				minimum = i

		(array[item], array[minimum]) = (array[minimum], array[item])

목록의 길이를 가져오기 위해 Python len() 메서드를 사용하여 시작했습니다. 그런 다음 이를 사용하여 for Python을 시작합니다. 목록의 모든 항목을 반복하는 루프입니다.

루프의 각 반복에 대해 최소 값을 설정합니다. 목록의 첫 번째 항목이 됩니다. 이전 연습에서 이 작업을 수행했습니다. 최소값을 설정하면 다른 for 목록의 모든 항목을 실행하는 루프가 시작됩니다.

목록의 각 항목에 대해 알고리즘은 최소값이 해당 항목보다 큰지 확인합니다. 그렇다면 아무 일도 일어나지 않습니다. 그렇지 않으면 최소값이 프로그램이 읽고 있는 항목이 됩니다.

목록의 모든 항목을 반복할 때 알고리즘은 최소값을 목록의 시작 부분으로 이동합니다. 그러면 우리 프로그램은 for상위가 될 때까지 계속됩니다. 루프가 종료됩니다. 이는 선택 정렬이 목록의 길이만큼 여러 번 실행되기 때문입니다.

정렬 함수 호출

프로그램을 실행해도 아무 일도 일어나지 않는다는 것을 눈치채셨을 것입니다. 아직 사용할 값을 코드에 지정하지 않았기 때문입니다. sortList 함수 외부의 프로그램 맨 아래에 다음 코드를 추가하십시오.

numbers = [73, 62, 61, 69]
sortList(numbers)
print("Sorted list:", numbers)

프로그램을 실행하면 다음이 반환됩니다.

[61, 62, 69, 73]

목록이 정렬되었습니다. 등을 두드려라. 해냈어!

선택 정렬을 사용하여 목록을 내림차순으로 정렬할 수 있습니다. 이러한 방식으로 목록을 정렬하려면 선택 정렬에서 "if" 문을 다음과 같이 변경할 수 있습니다.

if array[i] > array[minimum]:

보다 작음 기호를 보다 큼 기호로 변경했습니다. 최소값이 목록에서 가장 높은 값으로 설정되기 때문에 목록이 내림차순으로 정렬됩니다. 기술적으로 최소 값이 최대가 됩니다. 가치.

선택 정렬을 언제 사용해야 합니까?

버블 정렬과 같은 선택 정렬은 작은 목록에 가장 잘 사용됩니다. 이는 알고리즘이 더 큰 목록에서 사용될 때 삽입 정렬과 같은 다른 알고리즘만큼 효율적이지 않기 때문입니다.

선택 정렬은 정렬 알고리즘을 처음 시작할 때 배울 수 있는 훌륭한 정렬입니다. 다른 정렬은 마스터하기 어려울 수 있지만 선택 정렬을 명확히 이해하면 다양한 유형의 목록을 이해하는 데 도움이 됩니다.

선택 정렬의 복잡성은 무엇입니까?

선택 정렬의 시간 복잡도는 O(n2)입니다. 이는 알고리즘의 복잡성이 목록에 있는 요소의 수에 따라 기하급수적으로 증가한다는 것을 의미합니다.

O(n2)는 이 알고리즘에 대한 최악의 경우, 평균 및 최상의 경우 복잡성입니다. 정렬 복잡성에 대해 자세히 알아보려면 Big O Notation 가이드를 확인하세요.

결론

선택 정렬은 데이터를 정렬하는 중요한 방법입니다. 선택 정렬은 목록의 모든 항목을 읽고 각 반복에서 가장 작은 항목을 목록의 시작 부분으로 이동합니다. 이것은 목록의 모든 항목을 읽을 때까지 발생합니다.

선택 정렬은 더 효율적인 알고리즘을 사용할 수 있기 때문에 교육 외에 널리 사용되지 않습니다. 즉, 삽입 또는 병합 정렬과 같은 다른 종류를 배우기 위한 좋은 발판입니다.

파이썬에 대해 더 배우고 싶으십니까? 지식을 발전시키는 데 도움이 되는 전문가의 조언을 얻으려면 전체 Python 학습 방법 가이드를 읽어보세요.