#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;
#define RANDOMIZED_PIVOT
void quick_sort(int arr[],int left,int right)
{
if (left<right)
{
int i=left, j=right;
#ifndef RANDOMIZED_PIVOT
int idx=arr[left];
#else
srand((int)time(NULL));
int idx=left + rand()% (right-left+1);
int pivot=arr[idx];
#endif
swap(arr[i],arr[idx]);
while (i<j)
{
while (i<j && arr[j]>=pivot) --j;
if (i<j)
arr[i++]=arr[j];
while (i<j && arr[i]<pivot) ++i;
if (i<j)
arr[j--]=arr[i];
}
arr[i]=pivot;
quick_sort(arr,left,i-1);
quick_sort(arr,i+1,right);
}
}
int main()
{
int num;
clog<<" >>Input number of elements:"<<endl;
cin>>num;
clog<<" >>RANDOMIZED SORT: RAND_MAX="<<RAND_MAX<<endl;
int* a=new int[num];
srand((int)time(NULL));
clog<<" >>Generated random numbers:";
for (int i=0;i<num;++i)
{
a[i]=1+ (int)(512.0*rand()/(RAND_MAX+1.0));
cout<<a[i]<<' ';
}
cout<<endl;
clog<<" >>Sorted random numbers: ";
quick_sort(a,0,num-1);
for (int i=0;i<num;++i)
{
cout<<a[i]<<' ';
}
delete [] a;
return 0;
}
随机化快速排序
最新推荐文章于 2024-07-28 22:35:47 发布