QUICK SORT ALGORITHM with others
퀵 정렬은 여러가지 방식으로 구현할 수 있다. 구현하는 방식도 여러가지인 만큼 여러 문서를 보면서 이해하는데 한참 걸렸다. 가장 도움이 컸던 것은 나동빈님의 퀵정렬 글이었다. 가장 구현하기 쉬운 것은 Pivot을 맨 왼쪽 혹은 오른쪽에 있는 것을 잡는 것. 그러나 이런 식으로 하면 이미 정렬되어 있는 배열을 정렬할 때 시간 복잡도가 O(n^2)이 되기에 선택정렬이나 버블정렬과 다를게 없다. 그래서 피벗을 랜덤으로 잡거나 중간지점을 잡으라는데. 나는 위 아래 둘다 해보고 시간이 얼마나 걸리는지 측정해봤다. 1. 피벗을 맨 왼쪽으로 잡는 퀵 정렬. void quickSort(int lo, int hi) { if (lo >= hi) { return; } else { int pi = lo; int i = lo ..
자습
2021. 1. 9. 19:58