//添加头文件stdlib.h和time.h, main()函数一开头加上srand((unsigned)time(NULL))
int randpartition(int a[], int left, int right){
int p = round(1.0 * rand() / RAND_MAX * (right - left) + left); //四舍五入
swap(a[p], a[left]);
int temp = a[left];
while(left < right){
while(left < right && a[right] > temp) right--;
a[left] = a[right];
while(left < right && a[left] <= temp) left++;
a[right] = a[left];
}
a[left] = temp; //把temp放到left和right相遇的地方
return left;
}
void quicksort(int a[], int left, int right){
if(left < right){
int pos = randpartition(a,left,right);
quicksort(a,left,pos-1);
quicksort(a,pos+1,right);
}
}
快速排序C++实现
于 2019-09-05 14:52:33 首次发布