//快速排序优化
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include <cmath>
#include<iostream>
#include<ctime>
using namespace std;
int Partition(int A[], int left, int right){
srand((unsigned)time(NULL));
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;
return left;
}
void quickSort(int A[], int left , int right){
if (left < right){
int pos = Partition(A, left, right);
quickSort(A, left, pos -1);
quickSort(A, pos + 1, right);
}
}
int main(){
int A[8] ={4,7,3,5,2,6,1,8};
quickSort(A, 0, 7);
for (int i = 0; i < 8; ++i) {
if(i) printf(" ");
printf("%d", A[i]);
}
return 0;
}
快速排序优化
最新推荐文章于 2021-10-26 09:13:26 发布