用 Python 學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu), 有它就不用愁

圖片來(lái)自 unsplash

數(shù)據(jù)結(jié)構(gòu),我們對(duì)它已經(jīng)是耳熟能詳。對(duì)于計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的大學(xué)生來(lái)說(shuō),它是一門(mén)專(zhuān)業(yè)必修課。從事軟件開(kāi)發(fā)的人員則把它作為謀生必備技能。這充分體現(xiàn)數(shù)據(jù)結(jié)構(gòu)的重要性。因此,我們對(duì)數(shù)據(jù)結(jié)構(gòu)是不得不學(xué)。

雖然數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)不限制語(yǔ)言,但市面上很多教程書(shū)籍都是以 C 語(yǔ)言作為編程語(yǔ)言進(jìn)行講解。如果你喜歡且在學(xué)習(xí) Python,可能會(huì)陷入苦于這樣的煩惱中。那就是沒(méi)有 Python 版本的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)代碼。莫慌!我給大家推薦一個(gè)第三方庫(kù),它能讓你這種煩惱立刻云消霧散。

它就是Pygorithm

Github 倉(cāng)庫(kù)地址

Pygorithm 是由一個(gè)熱心腸的印度小哥編寫(xiě)的開(kāi)源項(xiàng)目。他編寫(xiě)創(chuàng)建該庫(kù)的初衷是處于教學(xué)目的。我們不僅可以閱讀源碼的方式學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),而且可以把它當(dāng)做現(xiàn)成工具來(lái)使用。

安裝

安裝 python 庫(kù),我推薦使用 pip 方式,方便又省事。

pip install Pygorithm
# 如果出現(xiàn)因下載失敗導(dǎo)致安裝不上的情況,可以先啟動(dòng) ss 再執(zhí)行安裝命令
# 或者在終端中使用代理
pip --proxy http://代理ip:端口 install Pygorithm

支持的類(lèi)型

Pygorithm 實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)類(lèi)型有以下這幾種,括號(hào)中表示包名。

    • 棧 (data_structures.stack.Stack)
    • 中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式 (data_structures.stack.InfixToPostfix)
  • 隊(duì)列

    • 隊(duì)列 (data_structures.queue.Queue)
    • 雙端隊(duì)列 (data_structures.queue.Deque)
  • 鏈表

    • 單向鏈表 (data_structures.linked_list.SinglyLinkedList)
    • 雙向鏈表 (data_structures.linked_list.DoublyLinkedList)
  • 樹(shù)

    • 二叉樹(shù) (data_structures.tree.BinaryTree)
    • 搜索二叉樹(shù) (data_structures.tree.BinarySearchTree)
    • 圖 (data_structures.graph.Graph)
    • 拓?fù)渑判?(data_structures.graph.TopologicalSort)
    • 有向圖 (data_structures.graph.CheckCycleDirectedGraph)
    • 無(wú)向圖 (data_structures.graph.CheckCycleUndirectedGraph)
    • 堆 (data_structures.heap.Heap)
  • 字典樹(shù)

    • 字典樹(shù) (data_structures.trie.Trie)

常見(jiàn)算法

你也許沒(méi)有想到吧。Pygorithm 中也實(shí)現(xiàn)一些常見(jiàn)的路徑搜索、查找、排序等算法。

常見(jiàn)的路徑搜索算法:

  • Dijkstra(迪杰斯特拉)
  • Unidirectional AStar(單向 A*算法)
  • BiDirectional AStar(雙向 A*算法)

常見(jiàn)的查找算法:

  • Linear Search (線性查找)
  • Binary Search (二分法查找)
  • Breadth First Search (廣度優(yōu)先搜索)
  • Depth First Search (深度優(yōu)先搜索)

常見(jiàn)的排序算法:

  • bubble_sort(冒泡算法)
  • bucket_sort(桶排序)
  • counting_sort (計(jì)數(shù)排序)
  • heap_sort(堆排序)
  • insertion_sort(插入排序)
  • merge_sort(歸并排序)
  • quick_sort (快速排序)
  • selection_sort(選擇排序)
  • shell_sort(希爾排序)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容