為什么說Python可以實(shí)現(xiàn)所有的算法
今天推薦一個(gè)Python學(xué)習(xí)的干貨。
幾個(gè)印度小哥,在GitHub上建了一個(gè)各種Python算法的新手入門大全,現(xiàn)在標(biāo)星已經(jīng)超過2.6萬。
這個(gè)項(xiàng)目主要包括兩部分內(nèi)容:一是各種算法的基本原理講解,二是各種算法的代碼實(shí)現(xiàn)。
傳送門在此:
https://github.com/TheAlgorithms/Python
簡單介紹下。
算法的基本原理講解部分,包括排序算法、搜索算法、插值算法、跳躍搜索算法、快速選擇算法、禁忌搜索算法、加密算法等。
這部分內(nèi)容,主要介紹各種不同算法的原理,其中不少介紹還給出了動(dòng)態(tài)示意圖,以更初學(xué)者能夠更直觀的理解。搬運(yùn)幾個(gè)示例:
雞尾酒排序算法
雞尾酒(Cocktail shaker)排序,也叫雙向冒泡排序(Bidirectional Bubble Sort)等。這是冒泡排序的一種變體。不同之處在于,冒泡排序是從低到高比較序列里的每個(gè)元素,而雞尾酒排序從兩個(gè)方向(低到高、高到低)來回排序,效率更高。
快速選擇算法
快速選擇(Quick Select)算法,用于查找無序列表中的第k個(gè)最小元素。這種算法及其變體,是實(shí)踐中最常用的高效選擇算法。
快速選擇算法與快速排序算法類似,選擇一個(gè)元素作為基準(zhǔn)來對元素進(jìn)行分區(qū),將小于和大于基準(zhǔn)的元素分在基準(zhǔn)左邊和右邊的兩個(gè)區(qū)域。不同的是,快速選擇并不遞歸訪問雙邊,而是只遞歸進(jìn)入一邊的元素中繼續(xù)尋找。
ROT13加密算法
Rot13(rotate by 13 places)是一種非常簡單的替換加密算法,用于加密26個(gè)英語字母。方法是:把每個(gè)字母用其后第13個(gè)字母代替。
當(dāng)然這種算法破解起來也很簡單,只需要反向替換就行,所以這種算法幾乎提供不了什么加密安全性,并且經(jīng)常作為弱加密的典型案例。
此外,這個(gè)項(xiàng)目還給出了多種Python算法的代碼實(shí)現(xiàn)。
包括二叉樹(Binary Tree)、動(dòng)態(tài)規(guī)劃(Dynamic Programming)、散列(Hashes)、線性代數(shù)、機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)等。
比方在機(jī)器學(xué)習(xí)這個(gè)類別里,給出了隨機(jī)森林分類、隨機(jī)森林回歸、樸素貝葉斯、決策樹、k值聚類、線性回歸、邏輯回歸、感知機(jī)等。
這里截個(gè)梯度下降代碼實(shí)現(xiàn)的圖,做個(gè)示意:
希望這個(gè)項(xiàng)目對你學(xué)習(xí)有幫助,再給一次傳送門:
https://github.com/TheAlgorithms/Python
還有一事。
這幾個(gè)印度小哥,不僅僅搞了一個(gè)學(xué)Python的項(xiàng)目,類似的資源收集項(xiàng)目還包括:Java、C、C++、Scala、C#等……
以上就是一個(gè)Python就可以實(shí)現(xiàn)所有的算法的詳細(xì)內(nèi)容,更多請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python從sqlite讀取并顯示數(shù)據(jù)的方法
這篇文章主要介紹了python從sqlite讀取并顯示數(shù)據(jù)的方法,涉及Python操作SQLite數(shù)據(jù)庫的讀取及顯示相關(guān)技巧,需要的朋友可以參考下2015-05-05Python中非常實(shí)用的一些功能和函數(shù)分享
這篇文章主要介紹了Python中非常實(shí)用的一些功能和函數(shù)分享,本文講解了帶任意數(shù)量參數(shù)的函數(shù)、使用Glob()查找文件、調(diào)試、生成唯一ID等內(nèi)容,需要的朋友可以參考下2015-02-02python3用urllib抓取貼吧郵箱和QQ實(shí)例
在本篇文章里小編給大家整理了關(guān)于python3中運(yùn)用urllib抓取貼吧的郵箱以及QQ的實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-03-03Django的性能優(yōu)化實(shí)現(xiàn)解析
這篇文章主要介紹了Django的性能優(yōu)化實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07python寫入csv時(shí)writerow()和writerows()函數(shù)簡單示例
這篇文章主要給大家介紹了關(guān)于python寫入csv時(shí)writerow()和writerows()函數(shù)的相關(guān)資料,writerows和writerow是Python中csv模塊中的兩個(gè)函數(shù),用于將數(shù)據(jù)寫入CSV文件,需要的朋友可以參考下2023-07-07Python實(shí)現(xiàn)將Unicode轉(zhuǎn)換為ASCII
這篇文章主要為大家詳細(xì)介紹了系統(tǒng)編碼的不同方法以及如何利用Python實(shí)現(xiàn)將Unicode轉(zhuǎn)換為?ASCII,文中的示例代碼講解詳細(xì),有需要的小伙伴可以學(xué)習(xí)一下2023-10-10python中的不可變數(shù)據(jù)類型與可變數(shù)據(jù)類型詳解
探尋python的數(shù)據(jù)類型是否可變,也可以更好的理解python對內(nèi)存的使用情況,下面這篇文章主要給大家介紹了關(guān)于python中不可變數(shù)據(jù)類型與可變數(shù)據(jù)類型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09Pandas.DataFrame轉(zhuǎn)置的實(shí)現(xiàn)
這篇文章主要介紹了Pandas.DataFrame轉(zhuǎn)置的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03