| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1499 人关注过本帖
标题:归并排序,运行不出结果,求指教。
只看楼主 加入收藏
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
收藏
已结贴  问题点数:20 回复次数:1 
归并排序,运行不出结果,求指教。
#include <iostream>
using namespace std;

void Merge(int a1[],int low,int mid,int high,int a2[])
{
    int i=low,k=low,j=mid+1;
   
    while((i<=mid)&&(j<=high))
    {
        if(a1[i]<=a1[j])
            a2[k++]=a1[i++];
        else
            a2[k++]=a1[j++];
    }
    while(i<=mid)
        a2[k++]=a1[i++];
    while(j<high)
        a2[k++]=a1[j++];
}

void merge_sort(int a[],int low,int high,int b[])
{
    int *t=new int[high-low+1]();
    if(low==high)
        b[low]=a[low];
    else
    {
        int mid=(low+high)/2;
        merge_sort(a,low,mid,t);
        merge_sort(a,mid+1,high,t);
        Merge(t,low,mid,high,b);
    }
    delete []t;
}

int main()
{
    int a[]={70,30,40,10,80,20,90,100,75,60,45};
    int length=sizeof(a)/sizeof(int);
    int b[length];
  
    merge_sort(a,0,length-1,b);
    for(int i=0;i<length;++i)
        cout<<a[i]<<" ";
    cout<<endl;
    return 0;
}
搜索更多相关主题的帖子: 归并 运行 int mid length 
2018-09-17 21:13
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
收藏
得分:20 
我觉得merge_sort里不需要开t,改了一下。
然后可以输出结果,但是完全是按原来顺序输出,没有排序。
因为Merge函数里每次把结果归并后都存到a2里面了,但是a1里面还是原来顺序,下次又按照a1里的顺序归并,就不对了。

void Merge(int a1[],int low,int mid,int high,int a2[])
{
    int i=low,k=low,j=mid+1;
    while((i<=mid)&&(j<=high))
    {
        if(a1[i]<=a1[j])
            a2[k++]=a1[i++];
        else
            a2[k++]=a1[j++];
    }
    while(i<=mid)
        a2[k++]=a1[i++];
    while(j<=high)
        a2[k++]=a1[j++];
    for(i=low;i<=high;i++) a1[i]=a2[i]; //加上这一句
}

void merge_sort(int a[],int low,int high,int b[])
{
  //  int *t=new int[high-lo1]();
    if(low==high)
        b[low]=a[low];
    else
    {
        int mid=(low+high)/2;
        merge_sort(a,low,mid,b);
        merge_sort(a,mid+1,high,b);
        Merge(a,low,mid,high,b);
    }
   // delete []t;
}
我水平有限,不知道为什么开了动态存储空间没有结果输出,希望大佬们指教。
2018-09-17 22:18
快速回复:归并排序,运行不出结果,求指教。
数据加载中...
 
   



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

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