关于STL的sort的时间复杂度问题

STL之sort

今天写一个题,T了好久,结果是STL的sort的问题,下面来简单说一下。


sort在STL中的定义

sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
_Compare __comp)

它是一种比较综合的排序,理论复杂度比一般手写的要好,但是使用时的复杂度有很大区别。

  1. 第一种

    sort(array+1,array+n+1)

    这种对一个数组直接按默认从小到大排序,当然是最快的一种用法。

  2. 第二种

    sort(array+1,array+n+1,cmp)

    这种用自定义的bool型比较函数的就会慢不止一倍我做题就因为这个卡

  3. 第三种

    sort(struct+1,struct+n+1)

    这种比第二种要快比第一种要慢,它是对一个结构体按照结构体内重载的<来比较的

  4. 第四种

    sort(struct+1,struct+n+1,cmp())
    这种是定义functor的排序,和第一种差不了多少,算是较好的结构体排序我用这个才A了那道题

    struct cmp{bool operator()(struct a,struct b){return a.s<b.s;}}

原文地址:https://www.cnblogs.com/VictoryCzt/p/10053447.html