如何表示算法的效率?初识大O表示

我们在比较算法的时候经常说 算法1 比 算法2 快 2倍 之类的话,但实际上类似这种说法不具有说服力。 因为当数据的个数发生变化时,对应的比例可能也会发生改变,有可能 当数据为10个时,算法1比算法2快2倍,但是当数据为100时,算法1有可能比算法2快3倍。因此需要一个用来描述算法的效率与数据个数 之间关系的东西----大O表示  Order of 大约是....

        探索算法的效率 
        N 表示数据项个数
         K 表示常数
         T 表示时间

        1.无序数组的插入一个数据的时间为 一个常数  T=K ,因为数据项总是放在空闲的位置,一次插入足够了。
        2.线性查找 :与 N 成正比  T = K * N  
        3.二分查找 :  T = K*log(N)
        

        以上算法 用 大O 表示为:
         1.O(1)
         2.O(N)

         3.O(log(N))

可以理解为 O(1) 为优秀  O(logN) 为良好  O(N) 为一般

通过上面的比较  可以了解到  无序数组的插入是优秀的,但是查找是一般的,有序数组的二分查找为良好的,但是插入是一般的,无论有序还是无序 删除都是一般的 。

————————————————————

原文:https://blog.csdn.net/qq_31408331/article/details/79967079

posted @ 2019-02-01 16:01  舞羊  阅读(151)  评论(0编辑  收藏  举报