알고리즘/알고리즘 이론

[알고리즘] 분할정복 - Quicksort(빠른정렬)

gangmini 2022. 4. 13. 18:01
반응형

💡빠른정렬 

 - 기준점(pivot)을 기준으로 배열을 둘로 쪼갠다

 - 기준점보다 작으면 왼쪽, 크면 오른쪽으로 분리

 - 다시 왼쪽, 오른쪽 배열에서 기준점을 잡고 분리

 - 배열에서 기준점을 제외하고 모든 원소와 비교하므로 점화식은 T(n) = n-1 그 외 정렬이나 합병 과정은 없음

 - 일정 복잡도 계산 X

 

quickwort(){}

partition(){}

 

✔️ 최악의 시간복잡도

 - 이미 오름차순으로 정렬되어 있어 왼쪽 배열은 아무것도 없고 오른쪽에는 정렬된 배열이 남아 무의미하게 계속 기준을 잡고 비교하는 과정을 거치기 때문

 - 

T(n) = T(0) + T(n-1) + n -1 , if n>0

(* n개의 배열을 비교하면서 n-1 비교, 왼쪽은 0, 오른쪽은 다시 n-1개의 배열로 이뤄짐)

      = n(n-1)/2

 

귀납적 증명

 

✔️ 평균 시간복잡도

 

반응형