快速排序随机化版本
2014-10-29 21:04
495 查看
#include<iostream> #include<algorithm> #include<time.h> #include<stdlib.h> using namespace std; void exchange(int &a,int &b){ int temp=a; a=b; b=temp; } int PARTITION(int *arry,int p,int r){ int x=arry[r]; //主元,划分子数组 int i=p-1;//记录 p<=k<<i 则A[k]<=x; for(int j=p;j<r;j++){ if(arry[j]<x){ i++; exchange(arry[i],arry[j]); } } exchange(arry[i+1],arry[r]); return i+1; } int RANDOM_PARTITION(int *arry,int p,int r){ time_t t; srand((unsigned) time(&t)); // srand((int)time(0)); int i=rand()%(r-p)+p; // int i=((int) (r*rand()))/ (RAND_MAX+1.0) +p; cout<<"i:"<<i<<endl; exchange(arry[i],arry[r]); return PARTITION(arry,p,r); } void QUICKSORT(int *arry,int p,int r){ if(p<r){ int q=RANDOM_PARTITION(arry,p,r); QUICKSORT(arry,p,q-1); QUICKSORT(arry,q+1,r); } } void show(int *arry,int i){ for(int j=0;j<=i;j++) cout<<arry[j]<<" "; cout<<endl; } int main(){ int arry[12]={0,10,31,4,5,9,6,1,2,3,8,-9}; QUICKSORT(arry,0,11); show(arry,11); return 0; }
相关文章推荐
- 算法导论 第2版 7.3 快速排序随机化版本
- 第七章快速排序之“快速排序的随机化版本RANDOM-QUICKSORT”
- 经典算法--快速排序的随机化版本
- 快速排序之随机化版本(7)
- 《算法导论》笔记 第7章 7.3快速排序的随机化版本
- 每日编程3之快速排序随机化版本
- CLRS 7.3快速排序的随机化版本
- 快速排序的随机化版本代码
- 《算法导论》笔记 第7章 7.3快速排序的随机化版本
- 快速排序随机化版本
- 快速排序的随机化版本
- 快速排序学习2(随机化版本)
- 算法实践篇-快速排序-随机化版本
- 快速排序的随机化版本
- 算法导论7.3快速排序的随机化版本
- 快速排序(递归版本)
- 每日编程7之快速排序非递归版本
- 算法导论-排序(二)快速排序、随机化快速排序
- 快速排序各种版本(record)
- 随机化快速排序代码