![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Mowa
努力是奇迹的另一个名字
展开
-
KMP算法个人理解
最近在看算法,看到KMP算法,其实有点绕,不是太好理解,就介绍一下自己对于这个算法的理解以及实现。KMP算法思想 Knuth-Morris-Pratt算法(简称KMP),是由D.E.Knuth、J.H.Morris和V.R.Pratt共同提出的一个改进算法。KMP算法是模式匹配中的经典算法,和BF算法(又称蛮力匹配算法,需要通过不断回溯依次移动进行模式串的匹配)相比,KMP算法的不同点是消除...原创 2018-07-09 15:56:10 · 554 阅读 · 0 评论 -
数据结构(Python语言描述)- 链表
目录1 链表1.1 单链表结构和双链表结构1.2 非连续性内存和节点1.3 单链表节点类2 单链表结构上的操作2.1 遍历2.2 搜索2.3 替换2.4 在开始处插入2.5 在末尾插入2.6 在开始处删除2.7 从末尾删除2.8 在任何位置插入2.9 从任意位置删除3 复杂度权衡:时间、空间和单链表结构4 链表的变体4.1 带有一...原创 2019-01-09 21:16:37 · 549 阅读 · 0 评论 -
数据结构(Python语言描述)- 队列
目录1 队列概览2 队列接口3 队列的2种应用3.1 模拟3.2 轮询CPU调度4 队列的实现4.1 队列的链表实现4.2 队列的数组实现4.3 两种实现的时间和空间复杂度分析5 案例学习1:模拟超市排队结账5.1 要求5.2 分析5.3 用户界面5.4 类及其作用6 优先队列7 案例学习2:急症室调度7.1 需求7.2 分析...原创 2019-01-18 11:34:53 · 1138 阅读 · 1 评论 -
数据结构(Python语言描述)- 数组
目录1 一维数组1.1 数组数据结构1.2 数组的操作1.3 复杂度权衡:时间、空间和数组2 二维数组 - - 网格1 一维数组数组(array)表示的是可以在给定的索引位置访问或替代的项的一个序列。1.1 数组数据结构数组是一个数据结构 支持按照位置对某一项的随机访问,且这种访问的时间是常数 在创建数组时,给定了用于存储数据的位置的一个数目,并且数...原创 2019-01-03 11:38:43 · 938 阅读 · 0 评论 -
数据结构(Python语言描述)- 栈
目录1 栈概览2 使用栈2.1 栈接口2.2 初始化一个栈2.3 示例应用程序:匹配括号3 栈的3种应用3.1 后缀表达式3.1.1 计算算数表达式3.1.2 计算后缀表达式3.1.3 将中缀表达式转换为后缀表达式3.2 回溯算法3.3 内存管理4 栈的实现4.1 测试驱动程序4.2 将栈添加到集合层级中4.3 数组实现4.4 链...原创 2019-01-19 21:42:45 · 1340 阅读 · 0 评论 -
数据结构(Python语言描述)- 排序算法
目录1.基本排序算法1.1 选择排序1.2 冒泡排序1.3 插入排序2. 更快排序算法2.1 快速排序2.2 归并排序(合并排序)1.基本排序算法计算机科学家设计了很多巧妙的策略对列表的项进行排序。每个Python排序函数都是在整数的一个列表上进行操作的,并且都会使用一个swap函数来交换列表中的两项的位置。def swap(lyst, i , j): ...原创 2018-12-24 20:55:30 · 411 阅读 · 0 评论 -
广度优先搜索(BFS)- Python实现
算法的工作原理:创建一个队列,用于存储要检查的人 从队列中弹出一个人 检查这个人是否被检查过 检查这个人是否为芒果经销商 是:大功告成 否:将这个人的所有邻居都加入到队列中 回到第二步 如果队列为空,就说明没有找到芒果经销商# -*- encoding: utf-8 -*-from collections import dequedef search(name):...原创 2018-12-11 10:10:15 · 848 阅读 · 0 评论 -
贪婪算法(集合覆盖问题) - Python实现
集合覆盖问题假设你办了个广播节目,要让全美50个州的听众都能收听的到。为此,你需要决定在哪些广播台播出。在每个广播台播出都需要支付费用,因此你力图在尽可能少的广播台播出。现有广播台名单如下:广播台 覆盖的州 Kone id, nv, ut Ktwo wa, id, mt Kthree or, nv, ca Kfour nv, ut Kfiv...原创 2018-12-14 16:13:00 · 5263 阅读 · 1 评论 -
迪杰斯特拉算法(Dijkstra)- Python实现
迪杰斯特拉的关键理念:找出图中开销最低的节点,并保证没有到该节点开销更低的路径以下面的图为例:要解决这个问题,需要三个散列表: graph 起点 A 6 B 2 A final 1 B A 3 final 5 final - costs A 6 B 2 终点 ∞ p...原创 2018-12-13 11:33:47 · 5951 阅读 · 0 评论 -
三元组顺序表存储稀疏矩阵并实现两种转置算法
稀疏矩阵 当矩阵中只有极少的非零元素,而且分布也不规律,如果非零元素个数只占矩阵元素总数的25%~30%或低于这个百分数时,这样的矩阵称为稀疏矩阵。三元组顺序表 对于稀疏矩阵中的非零元素来说,行号,列号以及元素值三项值可以唯一地确定该元素。元组顺序表中的三元恰好反映了这三项值,即(row,col,value),row代表行号,col代表列号,value代表元素值。然而,这样仍不能唯一地...原创 2018-07-10 18:29:49 · 20197 阅读 · 3 评论