啊哈磊_编程从这里起步

标题: 归并法求排序问题 [打印本页]

作者: 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