STL算法之sort和stable_sort

本文介绍了STL中的sort和stable_sort两种排序算法,包括它们的基本用法、适用场景及区别。sort适用于大部分容器,但不适用于list,而stable_sort保证了相等元素的原始顺序。示例展示了如何使用默认比较、自定义函数和对象进行排序,并通过实际操作展示了排序效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.stable_sort 和 sort的区别在于 前者作排序可以使原来的"相同"的值在序列中的相对位置不变

如 1 4 6 7 4' (4 和 4'值相等,加上' 表示是2个元素)
那么stable_sort能保证排序完 4 仍然在4' 前 也就是输出1 4 4' 6 7;但是sort 没有这个功能,算法不能保证这一点


2.在标准算法<algorithm>中的一部分算法 如果这个算法默认使用的是 < 运算符,那么这类算法通常提供一个重载版本,这个重载版本包括3个参数,而不是2个.新增的第三个参数是一个函数指针,这个函数指针指向的函数 就是用来代替默认的 < 运算符的.
也就是说如果容器中的2个元素 ,元素a和元素b,输入个这个新增的比较函数之后,函数返回true,那么a将会放在b前面,LZ给的例子里面这个比较函数能够用使长度大的排在前面.

同时,使用了stable_sort能够保证2个长度相同的元素按原顺序排列


//大部分容器适用、不适用于list容器
sort(b,e)
sort(b,e,p)
stable_sort(b,e)
stable_sort(b,e,p)

  1. #include<iostream>  
  2. #include<cstdio>  
  3. #include<string>  
  4. #include<vector>  
  5. #include<list>  
  6. #include<deque>  
  7. #include<algorithm>  
  8. using namespace std;  
  9.   
  10. /***************************************** 
  11. //大部分容器适用、不适用于list容器 
  12. sort(b,e) 
  13. sort(b,e,p) 
  14. stable_sort(b,e) 
  15. stable_sort(b,e,p) 
  16. *****************************************/  
  17. /**---------------------------------------------------------------------------------- 
  18. 注意:不适用于list容器,list有成员函数sort() 
  19. ----------------------------------------------------------------------------------**/  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值