请教关于归并排序问题

ccddhai1188 2008-12-03 05:58:12
这个程序我想半天,认为没错,可就是在vc中运行不了啊,不通过,好闷。。。

#include <iostream.h>
//归并

void merge(int r[],int r1[],int s,int m,int t) {int i,j,k;
i=s;j=m+1;k=s;
while((i<=m)&&(j<=t))
{
if(r[i]<=r[j])
r1[k++]=r[i++];
else
r1[k++]=r[j++];}
if(i<=m){while(i<=m)r1[k++]=r[i++];}
else {while(j<=t)r1[k++]=r[j++];}

}

//划分序列
void mergesort(int r[],int r1[],int s,int t)
{
if(s==t)
{r1[s]=r[s];}
else
{
mergesort(r,r1,s,(s+t)/2);
mergesort(r,r1,(s+t)/2+1,t);
merge(r1,r,s,(s+t)/2,t);
}
}

//主函数
void main()
{
const size=10;
int *p=new int[size];
int yuan[10]={0,17,16,59,123,25,269,54,65,27};
mergesort(yuan,p,1,9);
for (int i=1;i<=9;i++)
{cout<<yuan[i]<<" ";
cout<<*++p<<endl;}
...全文
71 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanreid 2008-12-03
  • 打赏
  • 举报
回复
你的代码可读性不高,没有版式。
int yuan[10]={0,17,16,59,123,25,269,54,65,27};
mergesort(yuan,p,1,9);

这里yuan数组是10个元素,mergesort中输入的开始和结束,分别是第2个和第10个。归并的原始算法不是这样

给你一个参考链接

http://www.aub.org.cn/Suanfa/Article142667.html

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧