图+代码Python实现《数据结构与算法基础》

Posted 写Bug的徐同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图+代码Python实现《数据结构与算法基础》相关的知识,希望对你有一定的参考价值。

数据结构与算法基础(python描述)

github地址

地址

复杂度

  • 时间复杂度O(n)
    1. 基本操作,即只有常数项,认为其时间复杂度为O(1)
    2. 顺序结构,时间复杂度按加法进行计算
    3. 循环结构,时间复杂度按乘法进行计算
    4. 分支结构,时间复杂度取最大值
  • 空间复杂度S(n)
    对一个算法在运行过程中临时占用存储空间大小的量度

顺序表

  • 形式
    image
  • 实现
    内置的list和tuple是采用分离式技术实现的动态顺序表
    image

链表

单链表

  • 形式
    image
  • 实现
    image

双链表

  • 形式
    image
  • 注意
    任意位置插入的实现
    image
  • 实现
    image

单向循环链表

  • 形式
    image
  • 注意
    判断尾结点为 --> cur.next != self.__head
  • 实现
    image

  • 形式
    image
  • 实现
    image

队列

基础队列

  • 形式
    image
  • 实现
    image

双端队列

  • 形式
    image
  • 注意
    双端队列两头都可以出入,front入队和rear出队需要额外判断此时的front、rear指针位置
  • 实现
    image

循环队列

  • 形式
    image
  • 注意
    rear/front从0开始计数,相当于留一个空间 队列空: front = rear
    队列满: (rear+1) % MaxSize = front --> 此时实际还留有一个空间,以避免与队空标志冲突
    队列长度计算: length = (rear-front+MaxSize) % MaxSize
  • 实现
    image

二叉树

  • 形式
    image
  • 实现构建
    image
  • 实现四种遍历&反转
    在这里插入图片描述

排序

冒泡排序

  • 形式
    image
  • 实现
    image

选择排序

  • 形式
    image
  • 实现
    image

插入排序

  • 形式
    image
  • 实现
    image

快速排序

  • 基本步骤
    1. 选择基准值 pivot 将数组分成两个子数组:小于基准值的元素和大于基准值的元素。这个过程称之为 partition
    2. 对这两个子数组进行快速排序
    3. 合并结果
  • 形式
    image
    image
  • 实现
    image

希尔排序

  • 概念
    把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;
    随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止
  • 形式
    image
  • 实现
    image

归并排序

  • 分治法步骤
    1. 分解:将待排序的 n 个元素分成各包含 n/2 个元素的子序列
    2. 解决:使用归并排序递归排序两个子序列
    3. 合并:合并两个已经排序的子序列以产生已排序的答案
  • 形式
    image
    image
  • 实现
    image

比较

image

查找

二分查找

  • 递归实现
    image

二叉查找树

  • 特征
    1. 所有key小于V的都被存储在V的左子树
    2. 所有key大于V的都存储在V的右子树
  • 形式
    image

以上是关于图+代码Python实现《数据结构与算法基础》的主要内容,如果未能解决你的问题,请参考以下文章

《数据结构与算法》十大经典排序算法动图演示(2019最新Python代码)

python基础下的数据结构与算法之顺序表

深入浅出理解图算法—— 广度优先遍历

(附代码)动图图解 | 十大经典排序算法Python版实现

基础算法[四]之图的那些事儿

基础算法[四]之图的那些事儿