新学的归并排序,给参谋一下......有兴趣的自己思考下.......
程序代码:
#include <stdio.h> #define MAX 10 int arr[MAX]; int tmp[MAX]; void ComSort(int start,int end) { int i; int mid=(start+end)/2; int p,q; if(start>end||start==end) return; printf("START:%d-%d\n",start,end); for(i=start;i<=end;i++) { printf("%d ",arr[i]); } printf("\n"); ComSort(start,mid); ComSort(mid+1,end); p=start; q=mid+1; for(i=start;i<=end;i++) { tmp[i]=0; } i=start; while(p<=mid&&q<=end) { if(arr[p]>arr[q]) { tmp[i]=arr[q]; q++; } else { tmp[i]=arr[p]; p++; } i++; } if(p>mid) { while(q<=end) { tmp[i]=arr[q]; i++; q++; } } if(q>end) { while(p<=mid) { tmp[i]=arr[p]; i++; p++; } } for(i=start;i<=end;i++) arr[i]=tmp[i]; printf("END:%d-%d\n",start,end); for(i=start;i<=end;i++) { printf("%d ",arr[i]); } printf("\n"); } int main() { int i; for(i=0;i<MAX;i++) scanf("%d",&arr[i]); ComSort(0,MAX-1); for(i=0;i<MAX;i++) printf("%d ",arr[i]); printf("\n"); return 0; } //23 56 4 67 26 37 76 34 89 35
[ 本帖最后由 C_戴忠意 于 2012-3-30 22:29 编辑 ]