首页 > 代码库 > 快速排序
快速排序
快速排序的平均性能较好,为原址排序,时间复杂度为T(n)=n*lg(n).
#include<stdio.h>int PARTITION(int A[],int p,int r){ int i,j,x,t; i=p-1; x=A[r]; for(j=p;j<r;j++) if(A[j]<=x){ i++; 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;}//改进后的,随机选择主元int RANDOM_PARTITION(int A[],int p, int r){ int x,i; i=rand()%(r-p)+p; x=A[i]; A[i]=A[r]; A[r]=x; return PARTITION(A,p,r);}void RANDOM_QUICKSORT(int A[],int p,int r){ int q; if(p<r){ q=RANDOM_PARTITION(A,p,r); //q=PARTITION(A,p,r); RANDOM_QUICKSORT(A,p,q-1); RANDOM_QUICKSORT(A,q+1,r); }}void main(){ int i=100; int j; int A[16]={10,7,5,3,2,8,14,15,16,25,24,23,20,38,18,20}; RANDOM_QUICKSORT(A,0,15); for(j=0;j<16;j++) printf("%d\t",A[j]);}
快速排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。