Notice
Recent Posts
Recent Comments
초코레
[알고리즘 개념정리] 퀵 정렬 본문
- 선택 정렬보다 훨씬 빠른 정렬 알고리즘
- 분할 정복 전략
- 기본단계 : 원소의 개수가 0이거나 1
- 기준원소 : 배열에서 원소하나를 고른다.
- 분할 : 모든 원소를 기준원소보다 작은 숫자로 이루어진 배열, 기준원소보다 큰 숫자들로 이루어진 배열로 나눈다.
- 두 개의 하위 배열에 대해 재귀적으로 퀵 정렬을 호출하고 그 결과를 합치면 전체 배열이 정렬된다.
def quicksort(array): if len(array) < 2: return array # 기본단계 else: pivot = array[0] # 기준원소 # 분할 less = [i for i in array[1:] if i <= pivot] greater = [i for i in array[1:] if i > pivot] return quicksort(less) + [pivot] + quicksort(greater) def main(): print(quicksort([3,5,2,1,4])) if __name__ == "__main__": main()
'알고리즘' 카테고리의 다른 글
선형 검색(linear search) (0) | 2019.12.21 |
---|---|
기본 자료구조 (0) | 2019.12.20 |
기본 알고리즘 (0) | 2019.12.19 |
[알고리즘 개념정리] 재귀 (0) | 2019.06.07 |
[알고리즘 개념정리] 선택정렬 (0) | 2019.06.03 |