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

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


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


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

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

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

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



第一章算法簡(jiǎn)介:

1.1引言

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

1.1.1性能方面

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

1.1.2問題解決及技巧

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

1.2 二分查找

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

1.2.1簡(jiǎn)單查找

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

1.2.2更佳的查找方式

每次從中間開始查找,就是我們所說的二分查找,這樣我們的時(shí)間復(fù)雜度就是logn,而不是簡(jiǎn)單查找中的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運(yùn)行時(shí)間

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

換而言之,這種時(shí)間被稱為線性時(shí)間

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

這樣的運(yùn)行時(shí)間被稱為對(duì)數(shù)時(shí)間。

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

1.3大O表示法

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

1.3.1算法的運(yùn)行時(shí)間以不同的速度增加

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

1.3.2 理解不同的大O運(yùn)算時(shí)間

大O表示法指出了最糟糕的情況下的運(yùn)行時(shí)間。

1.3.3一些常見的大O運(yùn)行時(shí)間

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

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

注意:

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

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

3.算法的運(yùn)行時(shí)間用大O表示法表示

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

1.3.4旅行商

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

1.4小結(jié)

1.二分查找的速度比簡(jiǎn)單查找快得多

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

3.算法運(yùn)行時(shí)間不是以秒為單位

4.算法運(yùn)行時(shí)間是從其增速的角度度量的

5.算法運(yùn)行時(shí)間用大O表示法表示

最后的福利

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

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

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



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

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