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

归并排序求见教

2012-09-13 
归并排序求指教不知道哪里错了C/C++ code#include iostreamusing namespace stdvoid merge(int d1[],in

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

C/C++ code
#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[]

热点排行