Hello,大家好我叫是Dream呀,一個有趣的Python博主,小白一枚,多多關照 ?
入門須知:這片樂園從不缺乏天才,努力才是你的最終入場券!
最后,愿我們都能在看不到的地方閃閃發(fā)光,一起加油進步
“一萬次悲傷,依然會有Dream,我一直在最溫暖的地方等你”,唱的就是我!哈哈哈~
第一章算法簡介:
- ??1.1引言??
1.1引言
算法是一組完成任務的指令,任何代碼片段都可以看做是一個算法!
1.1.1性能方面
本專欄介紹的每種算法都很可能有使用你喜歡的語言編寫實現(xiàn),你將學習到不同算法的優(yōu)缺點,進而選擇更好地算法!
1.1.2問題解決及技巧
利用這些廣泛的算法,你將會學習到更具體的AI算法,數(shù)據(jù)庫算法。
1.2 二分查找
二分查找是一種算法,其輸入必須是一個有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否則返回null。
1.2.1簡單查找
依次查找n次,又叫做傻找
1.2.2更佳的查找方式
每次從中間開始查找,就是我們所說的二分查找,這樣我們的時間復雜度就是logn,而不是簡單查找中的n
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億次,先不說時間問題,估計你的電腦跑出來這個程序也離退休不遠了~
換而言之,這種時間被稱為線性時間。
二分查找則不同,100個元素只需要7次;40億個元素,只需要驚人的32次!
這樣的運行時間被稱為對數(shù)時間。
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運行時間
- O(log n):對數(shù)時間,這樣的算法包括二分查找
- O(n):線性時間,這樣的算法包括簡單查找
- O(n*log n):這樣的算法包括快速排序
- O(n**2):這樣的算法包括選擇排序
- O(n!):這樣的算法包括旅行商問題的解決方案
注意:
1.算法的速度并非指時間,而是操作數(shù)的增速
2.談論算法的速度時,我們說的是隨著輸入的增加,其運行時間將以什么樣的速度增加
3.算法的運行時間用大O表示法表示
4.O(logn)比O(n)快,當需要搜索的元素越多時,前者比后者快得多。
1.3.4旅行商
一位商人要去往五個城市,規(guī)劃出最優(yōu)路線。這需要我們先找出所有路線再作比對,也就是5!,這個方法很費時間,但目前還沒有找到更快的算法。
1.4小結
1.二分查找的速度比簡單查找快得多
2.O(log n)比O(n)快,需要搜索的元素越多,前者比后者就更快得多!
3.算法運行時間不是以秒為單位
4.算法運行時間是從其增速的角度度量的
5.算法運行時間用大O表示法表示
最后的福利
最后一點小福利帶給大家:如果想快速上手python的小伙伴們,這個詳細整理PPT可以迅速幫助大家打牢python基礎,需要的小伙伴們可以下載一下Python入門基礎教程全套+小白速成+學不會來找我!
好啦,這就是今天要給大家分享的全部內(nèi)容了
如果你喜歡的話,就不要吝惜你的一鍵三連了~
本文摘自 :https://blog.51cto.com/u