zoukankan      html  css  js  c++  java
  • STL stable_sort 稳定排序

    STL stable_sort 稳定排序 - woaidongmao - C++博客

    STL stable_sort 稳定排序

    所谓稳定排序,是指对一个序列进行排序之后,如果两个元素的值相等,则原来乱序时在前面的元素现在(排好序之后)仍然排在前面。STL中提供stable_sort()函数来让我们进行稳定排序。为了更好的说明稳定排序的效果,我们定义了一个结构体元素,一个value成员和一个index成员,前者表示元素的值,后者表示乱序时的索引。

    stable_sort()内部由归并排序来实现。

    //Coded by 代码疯子

    //http://www.programlife.net/

    #include <iostream>

    #include <vector>

    #include <algorithm>

    #include <iterator>

    using namespace std;

     

    typedef struct TagNode

    {

            int value;

            int index;

    }Node;

     

    bool myCmp(const Node& a, const Node& b)

    {

            return a.value < b.value;

    }

     

    int main(int argc, char **argv)

    {

            vector<Node> coll;

            Node tmp;

            int idx = 0, num;

     

            while(cin >> num && num)

            {

                   ++idx;

                   tmp.value = num;

                   tmp.index = idx;

                   coll.push_back(tmp);

            }

     

            stable_sort(coll.begin(), coll.end(), myCmp);

     

            cout << "Index\tValue:" << endl;

            vector<Node>::iterator pos;

            for(pos = coll.begin(); pos != coll.end(); ++pos)

            {

                   cout << pos->index << "\t" << pos->value << endl;

            }

     

            return 0;

    }

    程序的运行结果如下图所示,可以看到,对于元素值相同的元素,索引小的在前面,稳定排序就是这么一个效果。

    clip_image001

  • 相关阅读:
    重视需求
    某2个人的qq对话
    公司安全提示
    需求实施心得
    项目远景
    发布系统应注意的几小点问题
    把握项目开发的节奏
    Css介绍
    调研工作的思路
    网,无处不在
  • 原文地址:https://www.cnblogs.com/lexus/p/2790574.html
Copyright © 2011-2022 走看看