摘要: 输入一组数据小到大排序 void quick_sort(int *array, int left, int right) { if(left < right) { int i=left,j=right; /* i,j分别为左右 游标 */ while(i != j){ /* 扫描右边查找比比基准点小的数,如果是大的只需移动下标 */ while(i!=j && array[j]>array[i]) /* 此时基准点为 array[i] */ j--; /* 上面的循环结束,说明在右边找到一个比基准的小的数 */ if(i!=j){ array[j] = array[ 阅读全文
posted @ 2012-03-07 16:04 月之华 阅读(127) 评论(0) 推荐(1) 编辑
摘要: 归并排序每次只需要把两个序列的最小元素加以比较,删除其中较小元素并入合并后的新表即可。viod merge_sort(int *A,int x,inty,int *T){if(y-x>1){int m=x+(y-x)/2;int p=x,q=m,i=x;merge_sort(A,x,m,T);merge_sort(A,m,y,T);while(p<m||q<y){if(q>=y||(p<m&&A[p]<=A[q]))else T[i++]=A[q++];}for(i=x;i<y;i++)A[i=T[i];}} 阅读全文
posted @ 2012-03-07 15:17 月之华 阅读(101) 评论(0) 推荐(0) 编辑