首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MergeSort -这是真的MergeSort吗?

MergeSort -这是真的MergeSort吗?
EN

Code Review用户
提问于 2017-11-02 18:49:33
回答 1查看 78关注 0票数 -3

这段代码真的可以作为MergeSort吗?这可以对数组进行排序,但它是MergeSort吗?

我的教职员工确实赞同这一点,但他可能没有正确地看到代码,我需要一些认真的帮助。

代码语言:javascript
复制
#include<iostream>
using namespace std;
int mid;
int array[8]={98, 23, 45, 14, 6, 67, 33};

void msort(int s, int e)
{
if (s<e) {
    mid = (s + e) / 2;
    msort(s, mid);
    msort(mid + 1, e);

}

for(int i=s;i<=e;++i)
{
    for(int j=i+1;j<=e;++j)
    {
        if(array[i]>array[j])
        {
            array[i] = array[i]+array[j];
            array[j] = array[i]-array[j];
            array[i] = array[i]-array[j];
        }
    }
}
}

int main() {
msort(0, 7);

for (int i=0; i<8; i++)
{
    cout<<"\t"<<a[i];
}
}
EN

回答 1

Code Review用户

发布于 2017-11-02 19:48:46

不不是的。合并排序的合并阶段不应该是二次的(对于外部合并是线性的,对于就地合并是线性的)。

在您的代码中,合并阶段无法解释左、右子数组已经排序的事实,并退化为冒泡排序。

另外,我强烈建议您不要使用交换元素的方式。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/179464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档