//基于荷兰国旗问题的快排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);
}
}
基于荷兰国旗问题的快速排序
最新推荐文章于 2024-07-10 20:44:52 发布