首页 > 编程知识 正文

stl排序算法,python执行效率

时间:2023-05-06 00:35:11 阅读:16908 作者:4327

学习STL的所有读者都将学习如何测量算法(或成员函数)的复杂度,因为学习c标准库,特别是STL需要考虑算法和成员函数的性能(也称为执行效率和复杂度) 现在最常用的方法叫做大o标记。

如果用大o表示法测量某算法的复杂性,则用输入量n的函数表示该算法的执行时间。 这里的输入量n在STL中通常是指算法操作的要素的个数。

举一个例子,如果算法的执行时间随着元素的数目而线性增加,即,如果元素的数目增加到倍数,则执行时间也增加到倍数,则算法的复杂度由o(n )表示。 相反,如果算法的执行时间与输入量n无关,则算法的复杂度由o(1)表示。

表1显示了一般算法的复杂度种类和用大o表示的复杂度。

算法种类意义大的o与操作的要素的个数无关,常数级算法的执行时间根据o(1)对数级算法的执行时间所操作的要素的个数而对数增加的o (log ) n ) )线性级算法的执行时间所操作的要素的个数而线性m是数字)根据算法执行时间所操作的要素的个数而以m次幂增加的o(nm ) o )、o(nm )等值得注意的地方是,大o表示法并不在意算法的执行所需的具体时间,换言之,影响算法的执行效率例如,对于某个算法的执行复杂度为o(n ),其线性增加,但线性增长的具体程度)是100n还是2n ),较大的o表示法是相同的。 也就是说,采用这种测量规律,任何两种线性算法都被认为具有相同的复杂度。

采用大o

表示法可能比小常数指数算法更受欢迎,因为具有巨大常数的线性算法无法指示实际运行时间。

因此,大o表示法是一种测量方法,它所展示的算法的最佳复杂度并不一定是真正的最佳(最快)算法。

复杂度元素个数种类大的o, 12510501001 00010 000常数阶o(1) 11111111对数阶o (log ) n ) 1234671013线性阶o(1 ) 12510501001 00010 0002次幂o ) n2 ) 1425100002501000000010 处理元素的数量越多,每个复杂度的差异就越大,忽略复杂度的部分就越不重要。

因此,在考虑算法的复杂性的情况下,输入量n (操作要素的个数)的值必须足够大才没有意义。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。