1. 程式人生 > >基於荷蘭國旗問題的快速排序

基於荷蘭國旗問題的快速排序

//基於荷蘭國旗問題的快排partition2
int *partition2(int *arr, int L, int R){
    int less = L - 1;
    int more = R;
    while(L < more){
        if(arr[L] < arr[R]){
            swap(arr, ++ less, L ++);
        }
        else if(arr[L] > arr[R]){
            swap(arr, -- more, L);
        }
        else
L ++; } swap(arr, more, R);//按照最後一個位置的值進行劃分,完成之後該位置歸位 int *index = new int[2]; index[0] = less + 1; index[1] = more; return index; } void quickSort(int *arr, int L, int R){ if(L < R){ int *p = partition2(arr, L, R); quickSort(arr, L, p[0] - 1); quickSort(arr, p[1
] + 1, R); } }