首页 > 代码库 > 高速排序
高速排序
#include<stdio.h> #include<algorithm> using namespace std; void InsertionSort(int a[],int N) { int j,p,tmp; for(p=1;p<N;p++) { //1-N-1趟目标 tmp=a[p]; for(j=p;j>0 && a[j-1]>tmp;j--) { a[j]=a[j-1]; } a[j]=tmp; } } int median3(int a[],int left,int right) { int mid=(left+right)/2; if(a[left]>a[mid]) swap(a[left],a[mid]); if(a[left]>a[right]) swap(a[left],a[right]); if(a[mid]>a[right]) swap(a[mid],a[right]); swap(a[mid],a[right-1]); return a[right-1]; } const int cutoff=3; void Qsort(int a[],int left,int right) { int pivot,i,j; //左小右 if(left+cutoff<=right) { //三数取中 pivot=median3(a,left,right); i=left;j=right-1; //切割 for(;;) { while(a[++i]<pivot){} while(a[--j]>pivot){} if(i<j) swap(a[i],a[j]); else break; } //换回轴枢 swap(a[i],a[right-1]); Qsort(a,left,i-1); Qsort(a,i+1,right); } else InsertionSort(a+left,right-left+1); } void main() { int a[13]={13,12,11,10,9,8,7,6,5,4,3,2,1}; Qsort(a,0,12); return ; }
高速排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。