首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

归并排序求赐教

2012-12-30 
归并排序求指教不知道哪里错了#include iostreamusing namespace stdvoid merge(int d1[],int d2[],int

归并排序求指教
不知道哪里错了

#include <iostream>
using namespace std;

void merge(int d1[],int d2[],int start,int mid,int end)
{
int i=start,j=mid+1,s=start;
while(i<=mid&&j<=end)
{
if(d1[i]<d1[j])
d2[s++]=d1[i++];
else
d2[s++]=d1[j++];
}
while(i<=mid)
d2[s++]=d1[i++];
while(j<=end)
d2[s++]=d1[j++];
}

void msort(int d1[],int d2[],int start,int end)
{
if(start==end)
d2[start]=d1[start];
else
{
int mid=(start+end)/2;
int *temp=new int[end-start+1];
msort(d1,temp,start,mid);
msort(d1,temp,mid+1,end);
merge(temp,d2,start,mid,end);
delete temp;
}
}

void main()
{
 int a[8]={3,6,8,2,7,9,4,1};
 msort(a,a,0,7);
 for(int i=0;i<8;i++)
  printf("%d ",a[i]);
 printf("\n");
}

[解决办法]
        msort(d1,temp,start,mid);
        msort(d1,temp,mid+1,end);

temp数组只有0~end-start,你却把结果填到了start~end。报runtime error都不奇怪。

顺便delete应该是delete[]

热点排行