首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是插入排序吗?

这是插入排序吗?
EN

Stack Overflow用户
提问于 2011-06-22 20:04:32
回答 2查看 612关注 0票数 0

我正在读“算法导论”和关于插入排序的内容。

我尝试在没有阅读他们的解决方案的情况下自己实现它。

这是我的解决方案,这是插入排序吗?

代码语言:javascript
复制
#include <iostream>

using namespace std;

int main()
{
    // initialize an unsorted array
    int a[] = {5,6,4,7,3,8,2,9,0,1};

    // define variables
    int i,j,tmp;

    for (int j=1; j<10; ++j)
    {
        for (int i=0;i<j;++i)
        {
            if (a[j] < a[i])
            {
                tmp = a[j];
                a[j] = a[i];
                a[i] = tmp;
            }
        }

    }

    for (i=0;i<10;++i)
    {
        cout << a[i] << endl;
    }

    return 0;
}

好的,我已经读过了,并且理解为什么它不是插入排序...这样就好多了。

代码语言:javascript
复制
   #include <iostream>

    using namespace std;

    int main()
    {
        // initialize an unsorted array
        int a[] = {5,6,4,7,3,8,2,9,0,1};

        // define variables
        int i,j,key,c;

        for (int j=1; j<10; ++j)
        {
            key = a[j];
            i = j - 1;

            while(i>=0 && a[i] > key)
            {
                a[i+1] = a[i];
                i = i - 1;
            }
            a[i+1] 

= key;
        ++c;
    }

    for (i=0;i<10;++i)
    {
        cout << a[i] << endl;
    }

    cout << endl << c << endl;
    return 0;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-22 20:11:54

您的解决方案似乎是冒泡排序,而不是插入排序。

票数 7
EN

Stack Overflow用户

发布于 2011-06-22 20:20:11

对我来说它看起来像是插入排序。您一次只能创建一个元素的排序数组(a[0...j])。

你的插入很不寻常,而且效率很低。要将a[j]插入到a[0...j]中,您不需要将其与每个元素进行比较。

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

https://stackoverflow.com/questions/6439490

复制
相关文章

相似问题

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