2数据结构与算法之大O表示法

Posted lqxing1994

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2数据结构与算法之大O表示法相关的知识,希望对你有一定的参考价值。

一、大O表示法

      大O表示法不是一种算法。它是用来表示一个算法解决问题的速度的快慢。一般我们描述一件事情完成的快慢是用时间描述的,比如说我完成一道计算题用了多少分钟。但算法的运算是很难用准确的时间来描述的,所以我们就用算法解决问题一共用了多少步来表示算法的快慢。

      用第一篇的两种查找方法来举例,简单查找我们要用列表中的每一个元素逐一去比较,如果有n个元素,那么简单查找最多需要n步找到数据(数据在列表末尾)。而二分查找一次只用中位数去作比较,当查找有n个元素的数组时,最多需要log2n次。

      用大O表示法表示两种算法的速度分别是:O(n),O(log2n).

      注意:1.大O表示法反映的是算法解决问题的最糟糕的情况;2.大O表示法表示的是:随着数据增多,算法解决问题的操作数的变化。

 

其它常见的大O表示法:

O(n) —— 简单查找

O(log2n) —— 二分查找

O(n!) —— 旅行商问题

 

二、旅行商问题

     如果有一个旅行商想要途径5个城市,他要计划一条这5个城市连接的最短线路,那么他就要计算(5×4×3×2×1=)120次才能找出最短的那条路线。同理,如果要途径n个城市,就要经过n!次计算才能找出最短线路。这个就是旅行商问题。

以上是关于2数据结构与算法之大O表示法的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法入门

python数据结构与算法学习自修第二天时间复杂度与大O表示法

数据结构与算法总结

数据结构与算法--排序

数据结构与算法--排序

复盘笔记二分查找和大O表示法