728x90
반응형
퀵 정렬
: 특정 키 값(pivot)을 중심으로 좌측은 pivot보다 작은 수, 우측은 pivot보다 큰 수가 오도록 서로 교환하는 과정을 의미한다. 왼->오 pivot 보다 큰 값을 찾는 A와 오->왼 pivot 보다 작은 값을 찾는 B로 나누어서 A와 B의 위치를 바꾸는 과정을 계속 반복한다. 이처럼 2개의 서브 리스트가 구성되면 첫 번째 리스트부터 앞의 과정을 반복하는 것이다.
문제를 여러개로 분리해서 수행한 후, 그 해결 결과 값들을 합쳐서 원래의 문제를 해결하는 분할 정복 방식을 따르고 있다.
"분할 정복 기법 + 재귀 알고리즘 = 퀵 정렬 알고리즘"

파이썬으로 구현한 퀵 정렬
from random import randint def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left, mid, right = [], [], [] for i in arr: if i < pivot: left.append(i) elif i > pivot: right.append(i) else: mid.append(i) return quick_sort(left) + mid + quick_sort(right) arr = [randint(1, 50) for i in range(8)] print(quick_sort(arr))
728x90
반응형
'Algorithm > Sorting Algorithm' 카테고리의 다른 글
합병 정렬 (Merge Sort) (0) | 2021.07.14 |
---|---|
힙 정렬 (Heap Sort) (0) | 2021.07.14 |
삽입 정렬 (Insertion Sort) (0) | 2021.07.14 |
선택 정렬 (Selection Sort) (0) | 2021.07.13 |
버블 정렬 (Bubble Sort) (0) | 2021.07.13 |