#include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int partition(int a[],int l,int r){ int i=l,j=r+1; int x=a[l]; while(true){ while(a[++i]<x&&i<r); while(a[--j]>x); if(i>=j)break; swap(a[i],a[j]); } a[l]=a[j]; a[j]=x; return j; } void quickSort(int a[],int l,int r){ if(l<r){ int p=partition(a,l,r); quickSort(a,l,p-1); quickSort(a,p+1,r); } } int randPartition(int a[],int l,int r){ int i=rand()%(r-l+1)+l; swap(a[l],a[i]); return partition(a,l,r); } void randQuickSort(int a[],int l,int r){ if(l<r){ int i=randPartition(a,l,r); randQuickSort(a,l,i-1); randQuickSort(a,i+1,r); } } void main(){ srand(time(NULL)); const int n=10; int a[n]; for(int i=0;i<n;i++){ a[i]=rand()%100+1; cout<<a[i]<<" "; } cout<<endl; randQuickSort(a,0,n-1); for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; cout<<endl; system("pause"); }