#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int a[maxn],n;
void f(int *a,int low,int high)
{
int i, j;
if(low>=high) return;
//swap(a[low], a[rand()%(high-low+1)+low]); //select a pivot randomly
i=low; j=high;
int temp=a[i];
while(low<high)
{
while(low<high&&a[high]>=temp) high--;
a[low]=a[high];
while(low<high&&a[low]<=temp) low++;
a[high]=a[low];
}
a[low]=temp;
int pos=low;
f(a,i,pos-1);
f(a,pos+1,j);
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
//srand((unsigned)time(0));
f(a,0,n-1);
for(int i=0;i<n;i++) printf("%d ",a[i]);
printf("\n");
return 0;
}
上面那张图分别代表c++自带的sort函数,不带srand,带srand(快速排序)。