当前位置: 首页 > article >正文

stable_sort的含义

stable_sort的含义

所谓稳定排序,是指对一个序列进行排序之后,如果两个元素的值相等,则原来乱序时在前面的元素现在(排好序之后)仍然排在前面。

STL中提供stable_sort()函数来让我们进行稳定排序。

为了更好的说明稳定排序的效果,我们定义了一个结构体元素,一个value成员和一个index成员,前者表示元素的值,后者表示乱序时的索引。

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


#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;struct TagNode
{int value;int index;
};bool myCmp(const TagNode &a, const TagNode &b)
{return a.value < b.value;	//升序排列
}bool myCmp2(const TagNode &a, const TagNode &b)
{return a.value > b.value;	//降序排列
}int main(int argc, char **argv)
{vector<TagNode> coll;TagNode 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<TagNode>::iterator pos;for(pos = coll.begin(); pos != coll.end(); ++pos){cout << pos->index << "\t" << pos->value << endl;}system("pause");return 0;
}




http://www.lryc.cn/news/2414192.html

相关文章:

  • OS X进程管理之launchctl
  • textarea 换行问题
  • com.lowagie.text.DocumentException: Font ‘STSong-Light‘ with ‘UniGB-UCS2-H‘
  • VBox 启动虚拟机失败 - NtCreateFile(\Device\VBoxDrvStub)
  • [精华]■■■关于windows installer出错的解决方案■■■
  • border和字体类型知识点笔记
  • 枚举进程,枚举窗口
  • C#中遍历所有的性能计数器PerformanceCounter
  • 中国大陆网站TOP100
  • 云的基本概念(公有云、私有云、 IaaS、PaaS、SaaS)
  • Dubbo 入门理论学习
  • Google的人体浏览器
  • Matlab的regionprops详解 连通区域
  • UCloud成首个通过乌云认证的云计算平台
  • linux修改index属性,selectedIndex 属性
  • 转贴:网友line写的火鸟字幕合并器教程
  • for的几种用法
  • MATLAB plotyy总结
  • 纳什均衡和帕累托最优
  • 计算机编程术语总结
  • 深入浅出WPF(一)
  • Cocoa 框架
  • windows C++多线程(三):线程终止结束ExitThread与TerminateThread
  • 关于delphi软件运行出现Invalid floating point operation的错误的解决办法
  • 运维自动化概述
  • Unity3D AVProVideo开始播放跟播放完成
  • 一个坑
  • 驻极体麦克风简介
  • window.history.go(-1)和window.location.go(-1)区别
  • 【毕业设计源码】PHP网上商城管理系统