摘要:
输入一组数据小到大排序 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[ 阅读全文
摘要:
归并排序每次只需要把两个序列的最小元素加以比较,删除其中较小元素并入合并后的新表即可。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];}} 阅读全文