Introduction
Summary introductions of several sorting algorithms and how they work
keywords divide and conquer, merge sort, quick sort.
TODO #todo : dividing logic pseudocode #todo : combining logic pseudocode #todo: look for the space complexity of merge sort
HW
Exercise draw the steps of sorting.
Next time
Divide and Conquer : recap
Divide, Conquer, combine
Merge sort
steps.
- Divide input array into two parts (usually in half)
- merge sort right one.
- merge sort left one.
- combine right and left ones.
Input : Array and indices p,q,r #todo 1: dividing logic pseudocode #todo 2: combining logic pseudocode #todo 3: look for the space complexity of merge sort
Big-O analysis of merge sort
On each depth, it needs $n$ times to combine. The number of depth is $log(n)$ so, the time complexity is $nlog(n)$
#todo 4: worst case data of merge sort.
Selection Sort
Set the first element as minimum.
steps.
- traverse through all array and find the minimum element.
- When found, swap with the first position.
- Next is minimum for second position.
#todo 5: pseudocode for selection sort.
Time complexity of selection sort.
On each round, it needs $n$ times to find a minimum. there are $n$ rounds. so, the time complexity is $O(n^2)$.
#todo 6: worst case data of selection sort.
Quick Sort
find the right sorted pivot to divide. swap each side's anomaly until two iteration overlap.
divide and conquer
steps.
- partition
- find a pivot position.
- put smaller element on the left, put bigger element on the right.
- sort each part.
- put the pivot target in between.
- quick sort each partition.
caution. There are a lot of variations of implementing quick sort.
pseudocode
5 2 4 7 1 3 2 6 이 있다. 5를 pivot 으로 설정한다. 좌측부터 5보다 작은지 본다. 7은 5보다 크다. 멈춘다. 우측부터 5보다 큰지 본다. 2는 5보다 작다. 멈춘다. 7과 2를 바꾼다.
좌측 이동을 다시 시작한다. ... 좌측 iteration 과 우측 iteration이 겹칠때까지 한다. 두 iteration이 지나가면 우리 pivot 과 바꾼다?
#todo 7 : pseudocode of quick sort.
Time complexity of Quick sort.
Best case : $O(nlog(n))$
- best case happens when partition happens at the right middle.
- (pivot element is a median of the list)
Worst case : $O(n^2)$
- worst case happens when data is already sorted.
- it should check n times for all n data. #todo 8: worst case data of quick sort.
#todo 9: protocol to find what is the best suitable sorting algorithms. #todo 10: checklist of checking the sorting algorithm is seamless.
ways to avoid the worst case of quick sort
- Dont' talways select the pivot as first element.
- ...
- #todo 11: write more.