请教关于归并排序问题

ccddhai1188 2008-12-03 05:57:25
这个程序我想半天,认为没错,可就是在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;}
...全文
110 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lq651659889 2008-12-03
  • 打赏
  • 举报
回复
mark
maying_11 2008-12-03
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
//归并

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);
}
}

//主函数
int main()
{
const int 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;
}
}

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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