#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int merge_sort(int a[],int p,int r); //函数声明 ,为调用做准备
int merge (int a[],int p,int q,int r);
int main(void)
{
int a[80]; //申请数组空间,存放待排序数列
a[9]=2; a[10]=4; //为待排序数组赋值
a[11]=5; a[12]=7; // 待排序数组伟 a【9....16]
a[13]=1; a[14]=2;
a[15]=3; a[16]=6;
int p,r; //需要用到的数组下标
p=9; r=16;
merge_sort(a,9,16); // 调用 merge-sort过程,将数组 a【】及其下标 p,r作为参数传递
int i; //输出 排序后的 数组
for(i=9;i<=16;i++)
printf("%d\n",a[i]);
return 0;
}
/*合并过程*/
int merge (int a[],int p,int q,int r)
{
int n1=q-p+1;
int n2=r-q;
//printf("%d\t %d\t %d\t",p,q,r);
//getchar();
int left[40],right[40];
int i,j,k;
for(i=1;i<=n1;i++)
left[i]=a[p+i-1];
for(j=1;j<=n2;j++)
right[j]=a[q+j];
left[n1+1]=10000;
right[n2+1]=10000; //两个哨兵
i=1;j=1;
for(k=p;k<=r;k++)
{
if (left[i]<=right[j] )
{ a[k]=left[i]; i++;}
else {a[k]=right[j];j++;};
}
return 0;
}
/* 排序过程*/
int merge_sort (int a[],int p,int r)
{
int q=0; // 会用到的数组下标
if (p<r )
{
q=(int) (p+r)/2;
merge_sort(a,p,q); // 逐步分解问题
merge_sort(a,q+1,r);
merge (a,p,q,r); //合并
}
return 0;
#include <math.h>
#include <stdlib.h>
int merge_sort(int a[],int p,int r); //函数声明 ,为调用做准备
int merge (int a[],int p,int q,int r);
int main(void)
{
int a[80]; //申请数组空间,存放待排序数列
a[9]=2; a[10]=4; //为待排序数组赋值
a[11]=5; a[12]=7; // 待排序数组伟 a【9....16]
a[13]=1; a[14]=2;
a[15]=3; a[16]=6;
int p,r; //需要用到的数组下标
p=9; r=16;
merge_sort(a,9,16); // 调用 merge-sort过程,将数组 a【】及其下标 p,r作为参数传递
int i; //输出 排序后的 数组
for(i=9;i<=16;i++)
printf("%d\n",a[i]);
return 0;
}
/*合并过程*/
int merge (int a[],int p,int q,int r)
{
int n1=q-p+1;
int n2=r-q;
//printf("%d\t %d\t %d\t",p,q,r);
//getchar();
int left[40],right[40];
int i,j,k;
for(i=1;i<=n1;i++)
left[i]=a[p+i-1];
for(j=1;j<=n2;j++)
right[j]=a[q+j];
left[n1+1]=10000;
right[n2+1]=10000; //两个哨兵
i=1;j=1;
for(k=p;k<=r;k++)
{
if (left[i]<=right[j] )
{ a[k]=left[i]; i++;}
else {a[k]=right[j];j++;};
}
return 0;
}
/* 排序过程*/
int merge_sort (int a[],int p,int r)
{
int q=0; // 会用到的数组下标
if (p<r )
{
q=(int) (p+r)/2;
merge_sort(a,p,q); // 逐步分解问题
merge_sort(a,q+1,r);
merge (a,p,q,r); //合并
}
return 0;
}
虽然开始漏洞百出,但是自己写的过程中,确实收获很多啊。
415

被折叠的 条评论
为什么被折叠?



