#include<iostream>
#include<cstdlib>
using namespace std;
#define N 15
void printArray(int *a,int len)
{
for(int i=0;i<len;i++)
cout<<a[i]<<" ";
cout<<endl;
}
void swap(int &a,int &b)
{
int buf=a;
a = b;
b = buf;
}
void partition(int *a,int l,int r,int* ret)
{
int less = l-1;
int more = r+1;
int p = l;
int flag = a[r];
while(p<more)
{
if(a[p] < flag)
{
swap(a[p],a[less+1]);
less++;
p++;
}
else if(a[p] > flag)
{
swap(a[p],a[more-1]);
more--;
}
else
p++;
}
ret[0] = less;
ret[1] = more;
}
void quickSort(int *a,int l,int r)
{
int ret[2]={0};
if(l<r)
{
swap(a[r],a[l+rand()%(l-r)]);
partition(a,l,r,ret);
quickSort(a,l,ret[0]);
quickSort(a,ret[1],r);
}
}
int main()
{
int a[N]={6,7,8,1,2,3,4,1,0,7,1,4,5,11,31};
quickSort(a,0,N-1);
printArray(a,N);
return 0;
}
随机快速排序
最新推荐文章于 2022-03-07 00:43:46 发布