搜索
查看: 468|回复: 2
打印 上一主题 下一主题

归并法求排序问题

[复制链接]
跳转到指定楼层
楼主
发表于 2015-8-4 00:07:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
求大神看看哪里错了  没有报错 但输入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++;
    }

}

沙发
 楼主| 发表于 2015-8-4 23:06:46 来自手机 | 只看该作者
求大神帮忙看看
来自: 微社区
板凳
发表于 2015-8-5 22:42:36 | 只看该作者
本帖最后由 rosynirvana 于 2015-8-5 22:44 编辑

for(idx=0;idx<10;idx++)
    scanf("%d",a[idx]);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表