演算法中的大O理解

2021-08-28 20:12:04 字數 679 閱讀 6071

在描述演算法複雜度時,經常用到o(1), o(n), o(logn), o(nlogn)來表示對應演算法的時間複雜度, 這裡進行歸納一下它們代表的含義:

這是演算法的時空複雜度的表示。不僅僅用於表示時間複雜度,也用於表示空間複雜度。

o後面的括號中有乙個函式,指明某個演算法的耗時/耗空間與資料增長量之間的關係。其中的n代表輸入資料的量。

比如時間複雜度為o(n),就代表資料量增大幾倍,耗時也增大幾倍。比如常見的遍歷演算法。

再比如時間複雜度o(n^2),就代表資料量增大n倍時,耗時增大n的平方倍,這是比線性更高的時間複雜度。比如氣泡排序,就是典型的o(n^2)的演算法,對n個數排序,需要掃瞄n×n次。

再比如o(logn),當資料增大n倍時,耗時增大logn倍(這裡的log是以2為底的,比如,當資料增大256倍時,耗時只增大8倍,是比線性還要低的時間複雜度)。二分查詢就是o(logn)的演算法,每找一次排除一半的可能,256個資料中查詢只要找8次就可以找到目標。

o(nlogn)同理,就是n乘以logn,當資料增大256倍時,耗時增大256*8=2048倍。這個複雜度高於線性低於平方。歸併排序就是o(nlogn)的時間複雜度。

o(1)就是最低的時空複雜度了,也就是耗時/耗空間與輸入資料大小無關,無論輸入資料增大多少倍,耗時/耗空間都不變。 雜湊演算法就是典型的o(1)時間複雜度,無論資料規模多大,都可以在一次計算後找到目標(不考慮衝突的話)

大O表示法的理解

一.背景 在現實生活中,解決乙個問題可以有多種方法,其中有好的方法,也有較為一般的方法。評判標準雖有不同,但總體思想是 用最小的代價獲得最多的收益。這裡所說代價並不僅指金錢開銷,有時也包括時間,所耗費資源等。電腦程式也是為了解決問題而編寫的。同理可知,程式有好的,也有一般的,評判標準主要有兩方面 時...

簡明解釋演算法中的大O符號

大o符號是一種演算法複雜度的相對表示方式。這個句子裡有一些重要而嚴謹的用詞 我所能想到的大o符號最好的例子就是做算術。拿兩個數字 123456和789012 舉例。我們在學校裡學到的基本算術操作是 它們中每乙個都是一次操作或乙個問題。為它們求解的方法就被叫做演算法 algorithm 加法是最簡單的...

演算法分析 大O 大 大

在演算法的學習中,最開始便是要學習演算法的分析。學習演算法分析時,我們便會接觸到這麼幾個符號 大o 大 大 常常讓人難以理解。在通常的演算法分析時,我們可以明白,在輸入規模較小,各種演算法之間的時間消耗並無明顯差別。只有當輸入規模較大時,對各個演算法之間消耗差別的對比與分析才有意義。所以上面幾個符號...