图+代码Python实现《数据结构与算法基础》
Posted 写Bug的徐同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图+代码Python实现《数据结构与算法基础》相关的知识,希望对你有一定的参考价值。
数据结构与算法基础(python描述)
github地址
复杂度
- 时间复杂度O(n)
- 基本操作,即只有常数项,认为其时间复杂度为O(1)
- 顺序结构,时间复杂度按加法进行计算
- 循环结构,时间复杂度按乘法进行计算
- 分支结构,时间复杂度取最大值
- 空间复杂度S(n)
对一个算法在运行过程中临时占用存储空间大小的量度
顺序表
- 形式
- 实现
内置的list和tuple是采用分离式技术实现的动态顺序表
链表
单链表
- 形式
- 实现
双链表
- 形式
- 注意
任意位置插入的实现
- 实现
单向循环链表
- 形式
- 注意
判断尾结点为 --> cur.next != self.__head - 实现
栈
- 形式
- 实现
队列
基础队列
- 形式
- 实现
双端队列
- 形式
- 注意
双端队列两头都可以出入,front入队和rear出队需要额外判断此时的front、rear指针位置 - 实现
循环队列
- 形式
- 注意
rear/front从0开始计数,相当于留一个空间 队列空: front = rear
队列满: (rear+1) % MaxSize = front --> 此时实际还留有一个空间,以避免与队空标志冲突
队列长度计算: length = (rear-front+MaxSize) % MaxSize - 实现
二叉树
- 形式
- 实现构建
- 实现四种遍历&反转
排序
冒泡排序
- 形式
- 实现
选择排序
- 形式
- 实现
插入排序
- 形式
- 实现
快速排序
- 基本步骤
- 选择基准值 pivot 将数组分成两个子数组:小于基准值的元素和大于基准值的元素。这个过程称之为 partition
- 对这两个子数组进行快速排序
- 合并结果
- 形式
- 实现
希尔排序
- 概念
把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;
随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止 - 形式
- 实现
归并排序
- 分治法步骤
- 分解:将待排序的 n 个元素分成各包含 n/2 个元素的子序列
- 解决:使用归并排序递归排序两个子序列
- 合并:合并两个已经排序的子序列以产生已排序的答案
- 形式
- 实现
比较
查找
二分查找
- 递归实现
二叉查找树
- 特征
- 所有key小于V的都被存储在V的左子树
- 所有key大于V的都存储在V的右子树
- 形式
以上是关于图+代码Python实现《数据结构与算法基础》的主要内容,如果未能解决你的问题,请参考以下文章