당신은 당신이 당신의 손에 1,000 개의 이름이 나열된 종이를 가지고 있다고 상상해보십시오. 그 중 하나를 찾아야하지만이 목록은 알파벳 순서가 아닙니다. 매우 실망스럽지 않습니까? 이 목록을 정렬하는 데 시간이 오래 걸리지 만 이름을 찾는 것이 훨씬 쉬워집니다. 따라서 사물을 분류하는 것은 인간의 자연스러운 욕망이며, 분류 된 목록을 찾는 것은 분명히 정렬되지 않은 목록을 검색하는 것보다 더 노동 절약입니다.
컴퓨터 세계에서 검색 목록은 매우 클 수 있으며 빠른 컴퓨터조차도 성능에 영향을 줄 수 있습니다. 이 경우 적절한 정렬 및 검색 알고리즘이 그러한 문제에 대한 해결책이 될 것입니다. 정렬은 순서대로 값 목록을 정렬하는 프로세스이며 검색은 목록에서 값의 위치를 찾는 프로세스입니다.
이 문제의 중요성을 설명하기 위해 미국 컴퓨터 과학자 인 Donald Knuth가 다음과 같이 말한 것을 보여 드리겠습니다.
1960 년대의 컴퓨터 제조업체는 모든 고객을 고려할 때 컴퓨터 런타임의 25% 이상이 정렬에 사용 된 것으로 추정했습니다. 실제로 많은 설치 사례에서 분류 작업은 계산 시간의 절반 이상을 차지합니다. 이러한 통계로부터, 우리는 (i) 분류에 많은 중요한 응용 프로그램이 있거나 (ii) 많은 사람들이하지 말아야 할 때 분류하거나 (iii) 비효율적 인 정렬 알고리즘이 널리 사용되었다고 결론을 내릴 수 있습니다. —— "컴퓨터 프로그래밍 기술"볼륨 3 : 정렬 및 검색, 페이지 3
이 튜토리얼에서는 선택 분류 알고리즘과 선형 검색 알고리즘을 구현하는 방법을 보여 드리겠습니다.
그러나 시작하기 전에 파이썬 코드를 정렬하고 검색하려면 내장 방법을 보여 드리겠습니다.
내장 정렬 방법 및 Python의 함수
Python을 사용하여 많은 정렬 알고리즘을 만들 수 있습니다. 이것은 좋은 학습 운동이지만 생산 응용 프로그램의 경우 파이썬의 내장 기능 및 방법을 고수해야합니다.
Python에는 목록을 내내에서 정렬하는 데 사용할 수있는
메소드가 있습니다. Python의 무대 뒤에서 사용되는 분류 알고리즘을 Timsort라고합니다. 많은 실제 수명에서 탁월한 성능을 제공하는 삽입 분류 및 병합 분류를 기반으로 한 하이브리드 분류 알고리즘입니다. 이 두 기능과 방법을 사용하는 방법의 예는 다음과 같습니다.
위 코드의 일부 상황을 알 수 있습니다. 함수는 원래 목록을 변경하지 않고 새 정렬 된 목록을 반환합니다. 그러나 원래 목록은 동일하게 유지됩니다. 반면에, 우리가 에서 메소드를 호출하면 를 반환합니다.
분류 동작을 수정하기 위해 일부 매개 변수를 전달할 수 있습니다. 예를 들어, 함수를 매개 변수로 전달하여 매개 변수없이 알파벳순으로 단어 목록을 정렬합니다. 두 번째 경우, 우리는 reverse
를 사용하여 정렬 된 단어의 순서를 뒤집습니다. sorted()
정렬 알고리즘을 선택하십시오
SELECT SORM SORT reverse=True
알고리즘은 최소 또는 최대 값의 연속 선택을 기반으로합니다. 오름차순 순서로 정렬하고자하는 목록이 있다고 가정 해 봅시다. 가장 작은 요소는 목록의 시작 부분에 있으며 가장 큰 요소는 목록의 끝에 있습니다.
원래 목록이 다음과 같이 보인다고 가정하십시오
우리가해야 할 첫 번째 일은 목록에서 최소 값을 찾는 것입니다.
최소값이 발견되면 최소값을 목록의 첫 번째 요소로 교환하십시오. 즉, 와 교환합니다. 목록은 이제 다음과 같습니다
목록에서 첫 번째 요소의 올바른 위치를 결정 했으므로 목록의 두 번째 요소에서 위의 단계 (최소값 찾기)를 반복합니다. 목록의 최소값 (두 번째 요소부터 시작)이 | 7 | 5 | 3.5 | 4 | 3.1 |
임을 알 수 있습니다. 그래서 우리는 이제 를 로 교환 할 것입니다. 목록은 이제 다음과 같습니다.
이 시점에서 첫 번째 요소와 두 번째 요소가 올바른 위치에 있는지 확인합니다.
이제, 우리는 목록의 나머지 부분에서 최소값을 확인합니다. 나머지 목록의 최소값은 이며, 이제 3.1
로 바꿉니다. 따라서 목록은 다음과 같습니다
따라서, 우리는 이제 처음 세 가지 요소가 올바른 위치에 있고 프로세스가 이러한 방식으로 계속된다고 결정합니다.
Python에서 선택 분류 알고리즘을 구현하는 방법을 보자 :
위의 스크립트 끝에서 다음 문장을 추가하여 알고리즘을 테스트합시다.
3.1
이 경우 다음 출력을 가져와야합니다.
7
선형 검색 알고리즘
선형 검색 알고리즘은 원하는 항목이 발견되거나 목록의 끝에 도달 할 때까지 목록의 각 항목이 확인되는 간단한 알고리즘입니다 (첫 번째 항목에서 시작). | 3.1 | 5 | 3.5 | 4 | 7 |
선형 검색 알고리즘은 파이썬에서 다음과 같이 구현됩니다 (Python School 기반) :
코드를 테스트합시다. 위의 파이썬 스크립트 끝에 다음 문을 입력하십시오.
입력 할 때 가 단일 또는 이중 인용문 사이에 있는지 확인하십시오 (즉, ). 예를 들어, 를 입력하면 다음 출력을 가져와야합니다.
3.5
3.5
그리고 입력대로 5
를 입력하면 다음 출력이 나타납니다. Oops, your item seems not to be in the bag
결론
우리가 본 바와 같이, Python은 여기서 정렬 및 검색 알고리즘을 다루는 것처럼 알고리즘의 개념을 쉽게 프로그래밍 할 수있는 프로그래밍 언어로 다시 입증됩니다.
다른 유형의 분류 및 검색 알고리즘이 있음에 주목해야합니다. Python을 사용하여 이러한 알고리즘을 더 깊이 파고 싶다면 무료 Python 객체 지향 프로그래밍 교과서를 참조하십시오.
위 내용은 파이썬의 정렬 및 검색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!