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 >= endreturn;
    
    int pivot = partition(arr, start, end);
    QuickSort(arr, start, pivot - 1);
    QuickSort(arr, pivot + 1end);
 
}
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

+ Recent posts