日期:2014-05-17 浏览次数:20805 次
#include<stdio.h> #define LENGTH 8 main(){ int r[LENGTH] = {42,36,56,78,67,11,27,36}; int i,j,temp,mark; for(i=1;i<LENGTH-1;i++){/*控制共进行LENGTH-1趟排序*/ mark = 0; for(j=0;j<LENGTH-i;j++){/*进行第i趟排序*/ if(r[j]>r[j+1]){ temp = r[j]; r[j]= r[j+1]; r[j+1] = temp; } } if(mark==0) break; } for(i=0;i<LENGTH;i++) printf("%d ",r[i]); printf("\n"); }
#include<stdio.h> int Partition(int r[],int s,int t){ int i,j,rp; i = s;/*i开始位置*/ j=t;/*j结束位置*/ rp = r[s];/*基准记录暂存rp*/ while(i<j){ while(i<j&&r[j]>=rp) j--;/*扫描比基准记录小的位置*/ r[i] = r[j];/*将比记录小的记录移到低端*/ while(i<j&&r[i]<=rp) i++;/*扫描比基准记录大的位置*/ r[j] = r[i]; } r[i] = rp; return i; } void Qsort(int r[],int s,int t)/*快速排序算法*/ { int k; if(s<t){ k = Partition(r,s,t);/*调用一段快速排序算法将r[s]...r[t]一分为二*/ Qsort(r,s,k-1);/*低端子序列递归排序,k是支点位置*/ Qsort(r,k+1,t);/*高端子序列排序*/ } } #define LENGTH 8 main(){ int i; int r[LENGTH] = {42,36,56,78,67,11,27,36}; Qsort(r,0,LENGTH-1); for(i = 0;i<LENGTH;i++) printf("%d ",r[i]); }