1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | int partition(int* arr, int start, int end) { int pivot = arr[end]; int left = start; int right = end - 1; while (left <= right) { while (arr[left] < pivot && left < end) /////////////제일중요함 이래야 같은 숫자일떄도 가능함. left++; while (arr[right] >= pivot && right >= start) right--; if (left < right) Swap(&arr[left], &arr[right]); } Swap(&arr[left], &arr[end]); return left; } void QuickSort(int* arr, int start, int end) { if (start >= end) return; int pivot = partition(arr, start, end); QuickSort(arr, start, pivot - 1); QuickSort(arr, pivot + 1, end); } | cs |
'알고리즘' 카테고리의 다른 글
| InsertSort (0) | 2018.05.26 |
|---|---|
| SelectionSort (0) | 2018.05.26 |
| BubbleSort (0) | 2018.05.26 |
| MergeSort (0) | 2018.05.26 |
| Heap Sorting (0) | 2018.05.26 |