新学的归并排序,给参谋一下......有兴趣的自己思考下.......
程序代码:#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 编辑 ]




