| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 394 人关注过本帖
标题:求助 c语言写的归并排序
只看楼主 加入收藏
qiuli_45z
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-3-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
求助 c语言写的归并排序
运行输入10个整数后,tc自动关闭,不知为何???
在申请空间处理的error函数要用什么文件头?
/*mergesort 2009-8-15 write by qiuli*/
#include <stdio.h>
#include <alloc.h>
#include <conio.h>
void mergesort(int num[],int n);
void mergepass(int num[],int length,int n);
void merge(int num[],int low,int m,int high);
main()
{int num[11],i;
 clrscr();
 printf("Insert ten number to sorting by inserting-sort !\n");
 for(i=1;i<11;i++)
   scanf("%d",&num[i]);
 mergesort(num,10);
 for(i=1;i<11;i++)
   printf("%d ",num[i]);
 getch();
 return 0;
 }
 void mergesort(int num[],int n)
  {int length=1;
   for(length=1;length<n;length*=2)
     mergepass(num,length,n);
   }
 void mergepass(int num[],int length,int n)
  { int i;
    for(i=1;i+2*length-1<=n;length*=2)
     merge(num,i,i+length-1,i+2*length-1);
    if(i+length-1<n)
     merge(num,i,i+length-1,n);
    }
 void merge(int num[],int low,int m,int high)
  { int i=low,j=m+1,p=0;
    int *r=(int*)malloc((high-low+1)*sizeof(int));
    /*if(!r)
     Error("no enough space to obtain!");*/
    while(i<=m&&j<=high)
     r[p++]=(num[i]<=num[j])?num[i]:num[j];
     while(i<=m)
      r[p++]=num[i++];
     while(j<=high)
      r[p++]=num[j++];
     for(p=0,i=low;i<=high;p++,i++)
      num[i]=r[p];
    }
搜索更多相关主题的帖子: c语言 
2009-08-28 10:31
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:20 
# include <malloc.h>   malloc函数用这个
·
Error("no enough space to obtain!"); 这函数哪里看来的?改用printf函数吧。
·
你定义merge函数里while循环是死循环。
while(i<=m&&j<=high)
     r[p++]=(num[i]<=num[j])?num[i]:num[j];   i和j值没变。
其它的是排法问题了,这种排法没搞过,看你的代码我就乱了。

[ 本帖最后由 UserYuH 于 2009-8-28 12:01 编辑 ]

努力—前进—变老—退休—入土
2009-08-28 11:54
qiuli_45z
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-3-5
收藏
得分:0 
谢谢,美女!!!
2009-08-28 17:32
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
小猪哥,看错了哟,我是帅哥。

努力—前进—变老—退休—入土
2009-08-28 17:36
liangonejzh
Rank: 2
等 级:论坛游民
帖 子:20
专家分:18
注 册:2009-7-30
收藏
得分:0 
..........
2009-08-28 20:39
快速回复:求助 c语言写的归并排序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012828 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved