Python 코드를 사용한 상위 5 가지 정렬 알고리즘 둘러보기

정렬 알고리즘 복잡성 '

정렬은 모든 소프트웨어 엔지니어와 개발자가 어느 정도의 지식을 필요로하는 기술입니다. 코딩 인터뷰를 통과 할뿐만 아니라 프로그래밍 자체에 대한 일반적인 이해도를 제공합니다. 다른 정렬 알고리즘은 알고리즘 설계가 프로그램 복잡성, 속도 및 효율성에 어떻게 강력한 영향을 미치는지 보여주는 완벽한 쇼케이스입니다.

상위 6 가지 정렬 알고리즘을 둘러보고 파이썬에서 어떻게 알고리즘을 구현할 수 있는지 알아 보겠습니다!

버블 정렬

Bubble sort는 기초 CS 수업에서 일반적으로 가르치는 것입니다. 간단하고 이해하기 쉽고 정렬이 작동하는 방식을 명확하게 보여주기 때문입니다. 버블 정렬은 목록을 단계별로 살펴보고 인접한 요소 쌍을 비교합니다. 순서가 잘못된 요소는 교체됩니다. 리스트의 정렬되지 않은 부분을 통과하는 것은리스트가 정렬 될 때까지 반복됩니다. Bubble sort가 목록의 정렬되지 않은 부분을 반복적으로 통과하기 때문에 최악의 복잡도는 O (n²)입니다.

선택 정렬

선택 정렬도 매우 간단하지만 거품 정렬보다 성능이 뛰어납니다. 둘 중 하나를 선택하는 경우 선택 정렬을 기본으로하는 것이 가장 좋습니다. 선택 정렬을 사용하여 입력 목록 / 배열을 두 부분으로 나눕니다. 이미 정렬 된 항목의 하위 목록과 나머지 목록을 구성하는 정렬 된 항목의 하위 목록입니다. 먼저 정렬되지 않은 하위 목록에서 가장 작은 요소를 찾아 정렬 된 하위 목록의 끝에 배치합니다. 따라서 우리는 가장 작은 분류되지 않은 요소를 지속적으로 잡고 정렬 된 하위 목록에 정렬 ​​된 순서로 배치합니다. 이 프로세스는 목록이 완전히 정렬 될 때까지 반복적으로 계속됩니다.

삽입 정렬

삽입 정렬은 버블 정렬 및 선택 정렬 둘 다보다 빠르고 확실합니다. 재미있게도, 카드 게임을 할 때 얼마나 많은 사람들이 자신의 카드를 정렬하는지입니다! 각 루프 반복에서 삽입 정렬은 배열에서 하나의 요소를 제거합니다. 그런 다음 해당 요소가 다른 정렬 된 배열 내에서 속하는 위치를 찾아 삽입합니다. 입력 요소가 남아 있지 않을 때까지이 프로세스를 반복합니다.

정렬 병합

병합 정렬은 Divide and Conquer 알고리즘의 완벽한 예입니다. 그러한 알고리즘의 두 가지 주요 단계를 간단하게 사용합니다.

(1) N 개의 서브리스트가있을 때까지 정렬되지 않은 목록을 계속 나누십시오. 여기서 각 서브리스트에는 "정렬되지 않은"요소가 1 개 있고 N은 원래 배열의 요소 수입니다.

(2) 모든 요소가 단일 정렬 배열로 완전히 병합 될 때까지 한 번에 2 개의 하위 목록을 정복하여 새로운 정렬 된 하위 목록을 생성하십시오.

빠른 정렬

빠른 정렬은 병합 정렬과 같은 분할 및 정복 알고리즘입니다. 조금 더 복잡하지만 대부분의 표준 구현에서는 병합 정렬보다 훨씬 빠르게 수행되며 최악의 복잡한 O (n²)에 거의 도달하지 않습니다. 3 가지 주요 단계가 있습니다.

(1) 먼저 배열에서 피벗이라고 할 요소를 선택합니다.

(2) 피벗보다 작은 모든 요소를 ​​피벗의 왼쪽으로 이동하십시오. 피벗보다 큰 모든 요소를 ​​피벗 오른쪽으로 이동합니다. 이것을 파티션 작업이라고합니다.

(3) 마지막 피벗보다 더 작고 큰 값을 가진 요소의 각 하위 배열에 위의 2 단계를 반복적으로 적용하십시오.

배우고 싶습니까?

최신 AI, 기술 및 과학에 관한 모든 정보를 게시하는 트위터에서 저를 팔로우하십시오! LinkedIn에서도 나와 연결하십시오!

추천 독서

파이썬 코딩에 대해 더 배우고 싶습니까? Python Crash Course 책은 Python으로 코딩하는 방법을 배우는 데 가장 적합한 리소스입니다!

그리고 좋은 책을 공유하면 모든 사람을 도울 수 있기 때문에 나는 훌륭한 블로그로 아마존 제휴사 링크가있는이 블로그를 지원합니다! 아마존 어소시에이트로서 자격을 갖춘 구매로 적립됩니다.