C++面试题(13)| sort()函数内部是如何实现的?

41 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

image.png

(欢迎大家关注我的微信公众号——控制工程研习,上面会分享很多我学习过程中总结的笔记。)

sort()里面是怎么实现的?

答案:

    sort()函数内部使用的是IntroSort的排序算法,IntroSort是一种混合排序算法,它使用三种排序算法来最小化运行时间,即快速排序(Quick Sort()),堆排序(Heap Sort)和插入排序(Insertion Sort) 。它是一种混合排序算法。

    根据不同的数量级别以及不同情况,能自动选用合适的排序方法。当数据量较大时采用快速排序,分段递归。一旦分段后的数据量小于某个阀值,为避免递归调用带来过大的额外负荷,便会改用插入排序。而如果递归层次过深,有出现最坏情况的倾向,还会改用堆排序。

时间复杂度为:

    最好情况– O(N·log N)

    平均情况- O(N·log N)

    最差情况- O(N·log N)

补充:

    sort() 函数是c++一种排序方法之一,它使用的排序方法是类似于快排的方法,时间复杂度为N•log N,执行效率较高。

 (1) Sort函数包含在头文件为#include的c++标准库中.

 (2) Sort函数有三个参数:

    · 第一个是要排序的容器(必须支持随机访问迭代器)的起始地址。

    · 第二个是结束的地址(最后一位要排序的地址)

    · 第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。