演算法學習之旅

2021-10-20 13:28:12 字數 1471 閱讀 9953

前言:鄙人為大資料專業的大一學生,接觸**的時日不多 實力非常有限,平常喜歡**,足球 希望各位能夠多多與我交流~

同時呢由於現在使用者對於體驗的要求增高,大部分企業都採取空間換時間的方式

空間複雜度和時間複雜度比較好理解 本人主要介紹時間複雜度的估算方法與效率排序…

接下來 讓我們來看看如何分析時間複雜度

print

('hello world'

)

俗話說學習乙個東西重hello world 開始

由這串**可以知道 列印出來的東西就是乙個hello world

那麼其就是乙個o(1)的時間複雜度

for i in

range

(n):

print

('hello world'

)

那麼很容易我們可以知道這串玩意的時間複雜度是o(n)

for i in

range

(n):

for j in

range

(n):

print

('hello world'

)

同理我們也可以知道這串**的時間複雜度是o(n**2)

那麼我已經簡單的了解到上面的時間複雜度的大致計算,接下來讓我們看看以下的**~

print

('hello world'

)print

('hello suanfa'

)print

('hello python'

)

for j in

range

(n):

print

('hello world'

)for i in

range

(n):

print

('hello world'

)

這樣算就錯了 事實上 兩串**的時間複雜度分別為o(1)與o(n**2)

因為呢 只要你沒有列印太多次,其實對於計算的影響是十分小的,小到甚至可以忽略不記(手動滑稽)

while n >1:

print

(n) n=n//

2

當n=64時輸出:

6432168

42我們不難發現上面的聯絡 不斷的減半輸出

2**6=64

同時寫成數學的方式就是log 64 =6

底數是2 (底數寫不出來) 手動流淚…

那麼我們就可以將時間複雜度簡單的寫成o(logn)

那麼問題來了

如何簡單快速的判斷時間複雜度

演算法學習之旅,中級篇(2) 插入排序

介紹 每次從無序表中取出第乙個元素,把它插入到有序表中的合適位置。分析 第一趟 比較前兩個數的大小,然後把其中最小的插入排在第乙個位置。第二趟 比較第三個數與前兩個數的大小,大的數後移,知道遇到小的,便插入到較小數的後面,數不再移動。依次進行,進行了n 1躺後,就完成了整個排序過程。include ...

演算法學習 Union Find演算法

union find演算法有它的實際用途。多用於動態連通的應用場景。union find演算法是 給出兩個節點,判斷它們是否連通,如果連通,是不需要給出具體的路徑的 舉兩個例子作為主要表現 1 在網路連線中,當發現沒有連線的兩個節點,可以把他們連線起來,一旦節點都連線起來,又能把多餘的線拆除,這時候...

演算法學習 KM演算法

km演算法 用於求二分圖的最佳完美匹配 即權值最大的完美匹配 如果你也是個剛來學習km演算法的人 大概的用途肯定還是知道的吧 還是直接說重點吧 首先 理解km演算法前 必須有以下3個概念 1.可行頂標 對於乙個賦值二分圖g x,y,e,w x,y 代表二分圖的兩邊頂點標號 e代表邊 w代表邊的權值 ...