最全 Python 演算法實現資源彙總!
整理 | Rachel
責編 | Jane
出品 | Python大本營(ID:pythonnews)
【導語】資料結構與演算法是所有人都要學習的基礎課程,自己寫演算法的過程可以幫助我們更好地理解演算法思路,不要輕視每一個演算法,一些雖然看似容易,但可能有很多坑。但是坑還是要自己一個一個踩過來的,而且也只有自己踩過坑,才能讓自己從理論到技能都得到提升。為了幫助大家在這個假期能提高學習效率,進階 Python 技能,筆者為大家推薦了一份用 Python程式碼實現演算法的資源帖,涵蓋從入門到高階的各類演算法。
下文中,筆者首先對專案的整體內容進行了一個歸納,之後為大家選取了幾個內容比較豐富的部分,供大家更高效地使用這一資源。
專案概覽
這個專案為大家彙總了Python標準庫實現的大部分演算法,對於一些神經網路模型也有所涉及。在程式碼的效率上,該專案的內容可能並沒有 Python 標準庫那樣高效,但是作為一個學習資源還是很值得一讀。下面對專案的內容進行一個大概的梳理。為了使得內容更加易讀,筆者將該專案中的內容劃分為了五個部分。
基礎操作部分
-
字串處理與查詢
-
排序
-
查詢
資料結構
-
佇列
-
連結串列
-
棧
-
堆
-
雜湊表
-
圖
-
二叉樹
-
字典樹
-
並查集
運算部分
-
布林運算
-
基礎數學運算
-
線性代數與矩陣
-
算數分析
網路協議部分
-
檔案傳輸
-
網路流
-
服務端與客戶端
進階部分
-
機器學習
-
神經網路
-
影象處理
其他
-
動態程式設計
-
程式設計題解題集
-
密碼學
重點內容介紹
在這個專案中並不是對所有內容都進行了詳細介紹,有部分主題的程式碼非常豐富。為了幫助大家高效地利用這一學習資源,筆者將其中比較詳細的部分單獨摘出,並做一個簡單的梳理,希望對大家有所幫助。
資料結構
在 data_structure 資料夾下,專案作者提供了大部分常用的 python 的實現程式碼,包括雜湊表、堆、棧、佇列等等。具體如下圖所示。
排序
在 sorts 資料夾下,作者給出了關於相關排序演算法的實現,包括氣泡排序、插入排序、堆排序等大部分常用演算法。部分演算法見下圖。
查詢
針對於查詢問題,作者在 searches 資料夾中給出了包括順序查詢、二分查詢、禁忌搜尋等常見查詢演算法的實現。
動態程式設計
在 dynamic_programming 部分,作者提供了一些常用的動態程式設計方法,程式碼主要針對於各類動態程式設計任務。下圖展示了部分程式碼列表。
圖結構的相關演算法
在 graphs 資料夾下,作者針對於圖結構的相關演算法給出了程式碼,包括 dijkstra 最短路徑演算法及其變體等。下圖展示了部分程式碼。
數學運算
在 maths 資料夾下,作者對 python 標準庫支援的一些運算操作進行了實現,包括基礎的加減乘除運算、查詢最大/最小值等等,部分程式碼如下。
機器學習部分
在 machine_learning 資料夾中的內容主要為傳統的機器學習方法的程式碼實現,包括隨機森林、樸素貝葉斯、kmeans 演算法、線性迴歸等。
密碼學
在 ciphers 這一部分,作者給出了base64等編碼的轉碼操作,並針對凱撒密碼等加密方法給出了相應的實現程式碼。部分程式碼如下。
ProjectEuler 習題集解答
ProjectEuler 是一個線上習題集,它與LeetCode等習題集不同的地方在於,該習題集主要針對於具有一定數學基礎的人入門 Python 程式設計使用。該網站會對程式碼的效率進行檢查。在 project_euler 資料夾中,作者提供了33個習題的解答程式碼,幫助大家獲得更愉悅的刷題體驗。
結語
以上就是今天筆者為大家分享的演算法實現大禮包內容,希望對大家有所幫助!具體專案內容參見如下地址:
GitHub專案地址: https://github.com/TheAlgorithms/Python
【END】
作為碼一代,想教碼二代卻無從下手:
聽說少兒程式設計很火,可它有哪些好處呢?
孩子多大開始學習比較好呢?又該如何學習呢?
最新的程式設計教育政策又有哪些呢?
下面給大家介紹CSDN新成員: 極客寶寶(ID: geek_baby)
戳他了解更多↓↓↓
熱 文推 薦
☞ 調查 10,000 名學生開發者:65% 自學成才,學 6 門程式語言!
☞ 獨家! 幣安被盜原因找到了! 7074枚比特幣竟是這樣丟掉的
☞ 補償100萬?Oracle裁900+程式設計師,新方案已出!
點選閱讀原文,輸入關鍵詞,即可搜尋您想要的 CSDN 文章。
你點的每個“在看”,我都認真當成了喜歡