我是靠谱客的博主 忧郁翅膀,最近开发中收集的这篇文章主要介绍衡量算法执行效率,大 O 表示法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用大 O 表示法衡量某个算法的复杂度,其实就是将该算法的运行时间用输入量为 n 的函数表示出来。这里的输入量 n 在 STL 中通常指的是算法操作的元素个数。

举个例子,当算法运行时间随元素个数成线性增长时(即如果元素个数呈倍数增长,运行时间也呈倍数增长),该算法的复杂度用 O(n) 来表示;反之,如果算法的运行时间和输入量 n 无关,则该算法的复杂度就用 O(1) 来表示。

常见的算法复杂度表示:

算法复杂度种类含意大 O 表示法
常数阶算法运行时间和所操作的元素个数无关O(1)
对数阶算法运行时间随所操作的元素个数呈对数增长O(log(n))
线性阶算法运行时间随所操作的元素个数呈线性增长O(n)
指数阶(m次方,m为数字)算法运行时间随所操作的元素个数呈 m 次方增长 O(nm)常见的有 O(n2)、O(n3) 等

大 O 表示法只是某种度量方法,它所显示的算法的最佳复杂度,并不一定就是真正的最佳(最快)算法。

复杂度随元素个数对照表:

复杂度元素个数
种类大 O 表示12510501001 00010 000
常量阶O(1)11111111
对数阶O(log(n))1234671013
线性阶O(n)12510501001 00010 000
2次方O(n2)1425100250010 0001 000 000100 000 000

当算法处理的元素较少时,各复杂度的差别很小,此时算法效率的优劣往往受被大 O 表示法忽略部分的影响更大。而当处理元素个数越多,各复杂度的差别越大,此时复杂度被忽略的部分就变得无关紧要了。

因此,在考量算法的复杂度时,输入量 n (操作元素的个数)的值必须足够大才有意义。

最后

以上就是忧郁翅膀为你收集整理的衡量算法执行效率,大 O 表示法的全部内容,希望文章能够帮你解决衡量算法执行效率,大 O 表示法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部