當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

??帶你輕松走進(jìn)算法的世界!算法圖解:第一章:算法入門
2022-04-29 14:01:01


??帶你輕松走進(jìn)算法的世界!算法圖解:第一章:算法入門_python


Hello,大家好我叫是Dream呀,一個有趣的Python博主,小白一枚,多多關(guān)照 ?

入門須知:這片樂園從不缺乏天才,努力才是你的最終入場券!

最后,愿我們都能在看不到的地方閃閃發(fā)光,一起加油進(jìn)步

“一萬次悲傷,依然會有Dream,我一直在最溫暖的地方等你”,唱的就是我!哈哈哈~



第一章算法簡介:

1.1引言

算法是一組完成任務(wù)的指令,任何代碼片段都可以看做是一個算法!

1.1.1性能方面

本專欄介紹的每種算法都很可能有使用你喜歡的語言編寫實現(xiàn),你將學(xué)習(xí)到不同算法的優(yōu)缺點,進(jìn)而選擇更好地算法!

1.1.2問題解決及技巧

利用這些廣泛的算法,你將會學(xué)習(xí)到更具體的AI算法,數(shù)據(jù)庫算法。

1.2 二分查找

二分查找是一種算法,其輸入必須是一個有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否則返回null。

1.2.1簡單查找

依次查找n次,又叫做傻找

1.2.2更佳的查找方式

每次從中間開始查找,就是我們所說的二分查找,這樣我們的時間復(fù)雜度就是logn,而不是簡單查找中的n

??帶你輕松走進(jìn)算法的世界!算法圖解:第一章:算法入門_python_02

def binary_search(list,item):
low=0
high=len(list)-1
while low<=high:
mid=(low+high)//2
guess=list[mid]
if guess==item:
return mid
if guess>item:
high=mid-1
else:
low=mid+1
return None
print(binary_search([1,3,5,7],1))

1.2.3運行時間

如果有100個元素,簡單查找需要找100次;而如果有40個億的元素,其更是要查找40億次,先不說時間問題,估計你的電腦跑出來這個程序也離退休不遠(yuǎn)了~

換而言之,這種時間被稱為線性時間。

二分查找則不同,100個元素只需要7次;40億個元素,只需要驚人的32次!

這樣的運行時間被稱為對數(shù)時間。

??帶你輕松走進(jìn)算法的世界!算法圖解:第一章:算法入門_運行時間_03

1.3大O表示法

大O表示法是一種特殊的表示法,指出了算法有多快。

1.3.1算法的運行時間以不同的速度增加

例如:為檢查長度為的的列表,簡單查找需要查找n次,運行時間為O(n),二分查找的運行時間為O(log n)。這指出了算法需要執(zhí)行的操作數(shù)。之所以被稱為大O表示法,是因為操作數(shù)前面有個O。這聽起來像笑話,但事實確實如此。

1.3.2 理解不同的大O運算時間

大O表示法指出了最糟糕的情況下的運行時間。

1.3.3一些常見的大O運行時間

  1. O(log n):對數(shù)時間,這樣的算法包括二分查找
  2. O(n):線性時間,這樣的算法包括簡單查找
  3. O(n*log n):這樣的算法包括快速排序
  4. O(n**2):這樣的算法包括選擇排序
  5. O(n!):這樣的算法包括旅行商問題的解決方案

??帶你輕松走進(jìn)算法的世界!算法圖解:第一章:算法入門_運行時間_04

注意:

1.算法的速度并非指時間,而是操作數(shù)的增速

2.談?wù)撍惴ǖ乃俣葧r,我們說的是隨著輸入的增加,其運行時間將以什么樣的速度增加

3.算法的運行時間用大O表示法表示

4.O(logn)比O(n)快,當(dāng)需要搜索的元素越多時,前者比后者快得多。

1.3.4旅行商

一位商人要去往五個城市,規(guī)劃出最優(yōu)路線。這需要我們先找出所有路線再作比對,也就是5!,這個方法很費時間,但目前還沒有找到更快的算法。??帶你輕松走進(jìn)算法的世界!算法圖解:第一章:算法入門_python_05

1.4小結(jié)

1.二分查找的速度比簡單查找快得多

2.O(log n)比O(n)快,需要搜索的元素越多,前者比后者就更快得多!

3.算法運行時間不是以秒為單位

4.算法運行時間是從其增速的角度度量的

5.算法運行時間用大O表示法表示

最后的福利

最后一點小福利帶給大家:如果想快速上手python的小伙伴們,這個詳細(xì)整理PPT可以迅速幫助大家打牢python基礎(chǔ),需要的小伙伴們可以下載一下Python入門基礎(chǔ)教程全套+小白速成+學(xué)不會來找我!

好啦,這就是今天要給大家分享的全部內(nèi)容了

如果你喜歡的話,就不要吝惜你的一鍵三連了~??帶你輕松走進(jìn)算法的世界!算法圖解:第一章:算法入門_數(shù)據(jù)結(jié)構(gòu)_06



本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務(wù)立即開通 >