随笔分类 -  数据结构与算法系列

摘要:内容概要 一、什么是动态规划 二、动态规划实例,斐波那契数列 三、钢条切割问题 四、最长公共子序列 1、动态规划 动态规划不是一种特定的算法,而是一种算法思想,是一种解决问题的方法 动态规划一般用于求解最优解问题 如何发现并判断那些问题能够运用动态规划思想,并且找到问题的递推式是关键 2、斐波那契数 阅读全文
posted @ 2021-07-13 15:40 口乞厂几 阅读(140) 评论(0) 推荐(0) 编辑
摘要:内容概要 一、树数据结构的实例——模拟文件系统 二、二叉树再接触——二叉树的遍历 三、二叉树再接触——二叉搜索树的应用 四、二叉搜索树偏斜问题,复杂度 五、偏斜问题解决,AVL树 1、树数据结构的实例——模拟文件系统 class FolderSystem: class Node: def __ini 阅读全文
posted @ 2021-05-08 17:34 口乞厂几 阅读(119) 评论(0) 推荐(0) 编辑
摘要:内容概要 一、贪婪算法概念 二、分数背包、01背包问题 三、活动安排问题 四、数字拼接问题 五、找零问题 1、贪婪算法概念 贪婪算法是指,在对问题求解最优解时,总是做出当前开来最好的选择。也就是说不从整体最优上加以考虑,它做出的是在某种意义上的局部最优解。 贪婪算法并不保证会得到最优解,但是在部分中 阅读全文
posted @ 2021-05-07 23:17 口乞厂几 阅读(166) 评论(0) 推荐(0) 编辑
摘要:内容概要 一、直接寻址表 二、哈希函数与哈希表 三、哈希冲突问题与解决 四、哈希的应用 1、直接寻址表 直接寻址表就是一种唯一的对应关系,它常用于字典中 存在一个全域U,它存储所有可能出现的键的名称;并且存在一个用于存储实际值的列表,全域U中存在的每一个键都与这个列表的下标唯一对应 比如 dic = 阅读全文
posted @ 2021-05-03 22:51 口乞厂几 阅读(62) 评论(0) 推荐(0) 编辑
摘要:内容概要 一、列表与数组的区别 二、链表介绍 三、单链表与双链表 四、列表与链表优缺点 1、列表与数组的区别 列表与数组的相同点 列表与数据中的元素都是紧挨着的 空间也是确定的(列表添加或者删除时,其实是重新开了一份空间,将原来的数据加上要添加的数据一起拷贝到那里) 列表与数组的不同点 数组只能存储 阅读全文
posted @ 2021-04-11 15:05 口乞厂几 阅读(981) 评论(0) 推荐(0) 编辑
摘要:内容概要 一、迷宫问题介绍 二、栈解决迷宫问题 三、队列解决迷宫问题 1、迷宫问题介绍 迷宫问题简单的说,就是通过一种算法,让计算机找到出口 迷宫可以通过二级列表实现,1表示路不允许通过;0表示路允许通过 比如下面的二级列表表示的迷宫 maze = [ # 横是y轴,纵是x轴 [1, 1, 1, 1 阅读全文
posted @ 2021-04-11 00:56 口乞厂几 阅读(1014) 评论(0) 推荐(0) 编辑
摘要:内容概要 一、栈 二、栈的应用——括号匹配问题 三、队列、双向队列 四、队列的应用——tail命令实现 1、栈 栈是种数据结构 栈的特点是后进的元素的先出 栈的构造示意图 **待补充** 栈的三个基本操作 入栈 出栈 查看栈头 查看堆是否有元素 定义一个模拟栈结构的类 class Stack: de 阅读全文
posted @ 2021-04-10 20:52 口乞厂几 阅读(75) 评论(0) 推荐(0) 编辑
摘要:内容概要 一、希尔算法 二、计数算法 三、桶排序 四、基数算法 1、希尔算法 希尔算法是插入算法的一种优化。 希尔算法每遍历一次,并不使得列表某些元素之间有序,只是使得整体的元素趋向于有序 希尔算法的一种实现方式 对于n个元素的列表,将列表分为d1个组,d1等于(n // 2),每组每个元素的间隔也 阅读全文
posted @ 2021-04-06 22:01 口乞厂几 阅读(91) 评论(0) 推荐(0) 编辑
摘要:内容概要 一、topk问题与讨论 二、topk解决 三、NB三人组优缺点 四、基础算法总结 1、topk问题 topk问题简单的说,就是从无序的n个数中排序好前k个大的数 -topk问题的解决思路 要解决topk问题,有几种解决思路 一种是使用NB三人组算法将n个数都排序好,然后截取前k个数即可(p 阅读全文
posted @ 2021-04-05 22:02 口乞厂几 阅读(370) 评论(0) 推荐(0) 编辑
摘要:内容概要 一、快速排列、代码实现、复杂度计算 二、堆排序前置知识:树相关、二叉树、堆 三、堆排序算法、代码实现、复杂度计算 四、归并排序算法、代码实现、复杂度计算 1、快速排列、代码实现、复杂度计算 **这里的快速排序和我之前写的思路不太一样(这个更好理解,代码也更简单),但核心思想没有变** 快速 阅读全文
posted @ 2021-03-29 22:10 口乞厂几 阅读(51) 评论(0) 推荐(0) 编辑
摘要:内容概要 一、冒泡算法、代码实现、复杂度计算 二、选择排序、代码实现、复杂度计算 三、插入排序、代码实现、复杂度计算 1、冒泡算法 冒泡算法就是将一组数据的前两个数进行比较,将较大的一个数往后移动,再比较紧接着的两个数的大小,直到找到本次遍历中最大的一个数 以此类推,直到排序完成 冒泡算法图解 ** 阅读全文
posted @ 2021-03-29 22:07 口乞厂几 阅读(47) 评论(0) 推荐(0) 编辑
摘要:学习视频地址:https://www.bilibili.com/video/BV1uA411N7c5 内容概要 一、时间复杂度 二、空间复杂度(了解) 三、时间复杂度判断 四、一些特殊的时间复杂度 1、时间复杂度 **个人理解** 时间复杂度是一个计量单位,就像毫米、厘米、分米、米等单位,它更接近数 阅读全文
posted @ 2021-03-29 22:05 口乞厂几 阅读(170) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示