C++面试题:STL中的sort排序是稳定排序吗?

前言:
最近看到一个C++的面试题,问道STL中的sort排序是否是稳定排序

回答:
sort()排序当然不是稳定排序,sort是主要用到了快速排序(平均时间复杂度为O(nlogn)),还结合了插入排序(时间复杂度为O(n2))和堆排序(时间复杂度为O(nlogn))。

在这里插入图片描述
注:关于sort的理解最好的方式就是看源码和看书

补充:

STL中的排序算法如下:
在这里插入图片描述
Effective STL对如何选择排序函数总结的很好:
1)若需对vector, string, deque, 或array容器进行全排序,你可选择sort或stable_sort;
2)若只需对vector, string, deque, 或array容器中取得top n的元素,部分排序partial_sort是首选.
3)若对于vector, string, deque, 或array容器,你需要找到第n个位置的元素或者你需要得到top n且不关系top n中的内部 顺序,nth_element是最 理想的;
4)若你需要从标准序列容器或者array中把满足某个条件 或者不满足某个条件的元素分开,你最好使用partition或stable_partition;
5)若使用的list容器,你可以直接使用partition和stable_partition算法,你可以使用list::sort代替sort和stable_sort排序。

  • 19
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值