Awesome Open Source
Awesome Open Source

Iridescent

Solid data structure and algorithms in Python

目前进度:数据结构部分已完成,算法部分即将开始完善链表和二叉树相关算法。Star this repo and come back later :)
(2022-06更新:终于更新了算法练习的部分)

Data Structure

数据结构我跟的主要知识体系是浙江大学的MOOC《数据结构》,以及这个GitHub仓库中的数据结构部分

数据结构分析

每种数据结构都用Python实现了常用操作,并分析了时间复杂度(其实通过代码也能分析出来),部分复杂的数据结构(红黑树/B树/堆/哈希表...)有我自己学习过程中的一些理解。完整代码在下面的ipynb文件中。

  • 数组
  • 链表
  • 堆栈
  • 队列
    • 循环队列
  • 二叉树
    • 二叉树的遍历
  • 二叉搜索树
  • 平衡查找树
    • AVL 树
    • 红黑树
    • B树、B+树
  • 字典树
  • 并查集
  • 哈希表

数据结构完整代码实现,含测试用例和注释

(建议在本地查看.ipynb文件,方便运行和页内跳转)

建议自己亲自实现一遍数据结构的所有操作,然后用我写的测试用例运行一下。自己写一遍能够掌握得更牢固。写的时候最好先看原理,理解每种操作怎么实现再自己写,我的代码仅仅作为参考,需要思路的时候再看我的代码,最好不要先看。

Algorithm

算法我跟的主要知识体系是 Robert Sedgewick 的《算法-第四版》,以及Coursera上面配套的Princeton的网课。部分知识点已经在数据结构当中用代码实现过了,所以就进行了省略。

大部分算法我都用了 Python 和 Golang 两种语言去实现,这样做不仅是熟悉语言的一种方式,也可以让你对算法对掌握更加牢固,同时如果有些地方不太看得懂,可以试试看另一种语言对实现,说不定能够获得更清晰的思路

算法分析

  • 算法复杂度分析
  • 排序算法
    • 冒泡排序
    • 选择排序
    • 插入排序
    • 希尔排序
    • 归并排序
    • 快速排序
    • 堆排序
  • 查找
    • 二分查找
    • 二叉搜索树
    • 红黑树
    • 散列表
  • 链表相关算法
  • 二叉树相关算法
  • 图相关算法
  • 字符串相关算法

算法练习

(建议在本地查看.ipynb文件,方便运行和页内跳转)

主要是为了方便算法的练习,一些测试代码用的数据结构已经在文件里构造好了。并且只练习最高频最经典的一些算法,方便快速找到手感。

Alternatives To Iridescent
Select To Compare


Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Python (836,678
Jupyter Notebook (162,610
Algorithms (37,592
Structure (10,102
Data Structures (9,789