快速排序(算法导论中的版本)
#include <iostream> #include <algorithm> #include <string> #include <map> #include <queue> #include <set> #include <fstream> #include <utility> #include <iomanip> #include <stack> #include <list> #include <vector> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <ctype.h> #include <limits.h> using namespace std; //算法导论中描述的快速排序,随机化版本 int partition(int *a,int p,int r){ int x,i=p-1,j,t; j=rand()%(r-p)+p; t=a[r]; a[r]=a[j]; a[j]=t; x=a[r]; for(j=p;j<r;j++){ if(a[j]<=x){ i+=1; t=a[i]; a[i]=a[j]; a[j]=t; } } t=a[i+1]; a[i+1]=a[r]; a[r]=t; return i+1; } void quicksort(int *a,int p,int r){ if(p<r){ int q=partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,r); } } int main() { int a[]={1,3,2,5,9,4,3}; quicksort(a,0,6); for(int i=0;i<7;i++){ printf("%d ",a[i]); } return 0; }
算法导论学习,实现快速排序,时间复杂度(nlogn)
扬帆起航,生命正式从这里开始...
爱情终将消失于茫茫的时间洪流之中,沉淀于厚重的黄泥沙丘之下...
爱情终将消失于茫茫的时间洪流之中,沉淀于厚重的黄泥沙丘之下...