啊哈磊_编程从这里起步
标题:
归并法求排序问题
[打印本页]
作者:
ylfasd123
时间:
2015-8-4 00:07
标题:
归并法求排序问题
求大神看看哪里错了 没有报错 但输入10个数后 提示运行错误 然后关闭了
#include <stdio.h>
#include <stdlib.h>
void mergesort(int *num,int start,int end);
void merge(int *num,int start,int middle,int end);
int main()
{
void mergesort(int *num,int start,int end);
void merge(int *num,int start,int middle,int end);
int i;int a[10];
for(i=0;i<10;i++)
scanf("%d",a[i]);
mergesort(a,0,9);
merge(a,0,(0+9)/2,9);
for(i=0;i<10;i++)
printf("%d",a[i]);
system("pause");
return 0;
}
void mergesort(int *num,int start,int end)
{
int middle;
if(start<end)
{middle=(start+end)/2;
mergesort(num,start,middle);
mergesort(num,middle+1,end);}
merge(num,start,middle,end);
}
void merge(int *num,int start,int middle,int end)
{
int n1=middle-start+1;
int n2=end-middle;
int *p=(int*)malloc(sizeof(int)*(n1+1));
int *l=(int*)malloc(sizeof(int)*(n2+1));
int i,k,j=0;
for(i=0;i<n1;i++)
p[i]=num[i];
p[n1+1]=1000;
for(i=0;i<n2;i++)
l[i]=*(num+i+middle-start+1);
l[n2+1]=1000;
i=0;
for(k=0;k<end-start+1;k++)
if(p[i]>l[j])
{
num[k]=l[j];j++;
}
else
{
num[k]=p[i];i++;
}
}
作者:
ylfasd123
时间:
2015-8-4 23:06
求大神帮忙看看
作者:
rosynirvana
时间:
2015-8-5 22:42
本帖最后由 rosynirvana 于 2015-8-5 22:44 编辑
for(idx=0;idx<10;idx++)
scanf("%d",
a[idx]
);
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/)
Powered by Discuz! X3.2