前言:鄙人為大資料專業的大一學生,接觸**的時日不多 實力非常有限,平常喜歡**,足球 希望各位能夠多多與我交流~
同時呢由於現在使用者對於體驗的要求增高,大部分企業都採取空間換時間的方式
空間複雜度和時間複雜度比較好理解 本人主要介紹時間複雜度的估算方法與效率排序…
接下來 讓我們來看看如何分析時間複雜度
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代表邊的權值 ...