快速排序
快速排序是把中值排序的中值改为随机值
#include<iostream>
#include<time.h>
using namespace std;
void swap(int *a,int *b){
int temp = *a;
*a = *b;
*b = temp;
}
int compare(int a, int b){
if(a > b) return 1;
else if(a == b) return 0;
else return -1;
}
void quickSort(int arr[],int left,int right){
if(left >= right){
return;
}
int index = (rand()%(right - left) + 1) + left;
int i = left,temp_r = right - 1;
while( i <= temp_r){
if(compare(arr[i],arr[index]) >= 0){
swap(&arr[i],&arr[temp_r]);
temp_r--;
}else{
i++;
}
}
swap(&arr[i],&arr[index]);
index = i;
quickSort(arr,left,index - 1);
quickSort(arr,index + 1,right);
}
int main(){
int len;
cin>>len;
int arr[len];
for(int i = 0; i < len;++i){
cin>>arr[i];
}
quickSort(arr,0,len-1);
for(int i = 0; i < len; ++i){
cout<<arr[i]<<",";
}
cout<<endl;
return 0;
}

浙公网安备 33010602011771号