必威体育Betway必威体育官网
当前位置:首页 > IT技术

algorithm库介绍之---- stable_sort()方法 与 sort()方法

时间:2019-09-30 06:41:02来源:IT技术作者:seo实验室小编阅读:85次「手机版」
 

stable_sort

文章转载自:http://www.cnblogs.com/ffhajbq/archive/2012/07/24/2607476.html

关于stable_sort()和sort()的区别:

你发现有sort和stable_sort,还有 partition 和stable_partition, 感到奇怪吧。其中的区别是,带有stable的函数可保证相等元素的原本相对次序在排序后保持不变。或许你会问,既然相等,你还管他相对位置呢,也分不清 楚谁是谁了?这里需要弄清楚一个问题,这里的相等,是指你提供的函数表示两个元素相等,并不一定是一摸一样的元素。

例如,如果你写一个比较函数:

bool less_len(const string &str1, const string &str2)
{
        return str1.length() < str2.length();
}

此时,"APPle" 和 "winter" 就是相等的,如果在"apple" 出现在"winter"前面,用带stable的函数排序后,他们的次序一定不变,如果你使用的是不带"stable"的函数排序,那么排序完 后,"Winter"有可能在"apple"的前面。

举例说明:

#include <vector>
 #include <iOStream>
 #include <algorithm>
 
 using namespace std;
 
 bool comp_as_int(double i, double j)
 {
     return (int(i)<int(j));
 }
 
 
 int main()
 {
     double mydoubles[] = {3.14, 1.41, 2.72, 4.67, 1.73, 1.32, 1.62, 2.58};
     vector<double> v;
     vector<double>::iterator it;
 
     v.assign(mydoubles, mydoubles + 8);
     
     cout<<"use default comparison:"<<endl;
     stable_sort(v.begin(), v.end());
 
     for(it = v.begin(); it != v.end(); it++)
         cout<<*it<<" ";
     cout<<endl;
 
     cout<<"use selfdefined comparison function comp_as_int():"<<endl;
     v.assign(mydoubles, mydoubles + 8);
     stable_sort(v.begin(), v.end(), comp_as_int);
     
     for(it = v.begin(); it != v.end(); it++)
         cout<<*it<<" ";
     cout<<endl;
     cout<<"if it is not sorted with stable_sort(), the sequence of all elements between 1 and 2 will be set randomly..."<<endl;
 
     return 0;
 }

输出结果:

1 use default comparison:
2 1.32 1.41 1.62 1.73 2.58 2.72 3.14 4.67
3 use selfdefined comparison function comp_as_int():
4 1.41 1.73 1.32 1.62 2.72 2.58 3.14 4.67
5 if it is not sorted with stable_sort(), the sequence of all elements between 1 and 2 will be set randomly...

相关阅读

Oracle数据库深入学习

一、Oracle概念 oracle数据可系统是美国oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器或

解决sql server2008数据库安装之后,web程序80端口被占

前言: 原来电脑上的Apache一直使用正常,在安装sql server2008后,突然发现Apache无法启动,检查了一下是因为80端口被强制占用了。 解

sort排序函数

sort函数可以排序任何类型的函数,包括自己写的结构体 (sort函数效率高) 头文件#include<algorithm> 排序数值从小到大int num[10

Collections.sort()两种用法

Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式: (1) public static <T extends Compara

深度|从数据仓库到数据湖——浅谈数据架构演进

转载自https://mp.weixin.qq.com/s/321mkZsuxqXOme5hw_83mQ 网管产品需要从数据仓库的角度来看,才能获得完整的视图。数据集成真正

分享到:

栏目导航

推荐阅读

热门阅读