基於荷蘭國旗問題的快速排序
阿新 • • 發佈:2019-01-23
//基於荷蘭國旗問題的快排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);
}
}