随机中枢的快速排序算法
思路:
就是在普通的快排的基础上,加上了一行生成随机数的代码,另外加上了一行将生成的随机值和第一个数字进行交换。其余的算法思路都是普通的快速排序 一样的。
#include<iostream>
using namespace std;
#include <vector>
#include<math.h>
vector<int>vt={40,38,46,79,56,84};
int Quickly_sort(int low,int high,vector<int>&vt){
int pivot=low+rand()%(high-low+1);
swap(vt[low],vt[pivot]);
pivot=vt[low];
while(low<high){
while(low<high&&vt[high]>=pivot)--high;
vt[low]=vt[high];
while(low<high&&vt[low]<pivot)++low;
vt[high]=vt[low];
}
vt[low]=pivot;
return low;
}
void random_pivot_quickly_sort(vector<int>&vt,int low,int high){
if(low<high){
int pivot=Quickly_sort(low,high,vt);
random_pivot_quickly_sort(vt,low,pivot-1);
random_pivot_quickly_sort(vt,pivot+1,high);
}
}
void translate(vector<int> vt){
for(int i=0;i<vt.size();++i){
cout<<vt[i]<<" ";
}
}
int main(){
random_pivot_quickly_sort(vt,0,vt.size());
translate(vt);
return 0;
}