
数据结构与算法
亮亮不想说话
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法--聊聊散列表查找
数据结构与算法--聊聊散列表查找前言1. 散列函数常见手段1.1 直接定值法:1.2 数字分析法:1.3 平方取中法1.4. 折叠法1.5. 除留余数发2. 散列冲突的解决2.1 开放定址法2.2 再散列函数发2.3. 链地址发2.4. 公共溢出法3. 散列表实现前言在日常的工作中,经常会接触到散列表、MD5算法、哈希表等一些技术,这些都是运用了散列技术。那么散列表是怎么查找的呢?怎么设计一个散列呢?接下来来聊聊散列表设计的常见手段和怎么解决散列冲突。1. 散列函数常见手段算列技术:记录的存储位置原创 2020-05-24 00:42:06 · 350 阅读 · 0 评论 -
数据结构与算法--聊聊那些常见的排序算法
数据结构与算法--聊聊那些常见的排序算法前言1. 冒泡排序2. 简单选择排序3. 直接插入排序4. 希尔排序5. 堆排序6. 归并排序7. 快速排序前言 在开发中会经常用到排序,经常用到排序比如:冒泡排序,选择排序,直接插入排序等。那什么是排序呢?这个其实都很熟悉了,其实排序还分为内排序和外排序内排序:在排序整个过程中,待排序的所有记录全部被放置在内存中外排序:由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外存 之间多次交换数据才能进⾏。常用的是内排序。接下来聊聊常见的排序算原创 2020-05-23 23:50:13 · 469 阅读 · 0 评论 -
数据结构与算法 -- 平衡二叉树的构建
数据结构与算法 -- 平衡二叉树的构建前言1. 平衡二叉树构建分析2. 平衡二叉树构建前言上一篇学习了一些常见的静态查找和动态查找中二叉搜索树的查找,插入和删除操作。在构建一个二叉搜索树的时候,假如给定的数据是一直递增的,那么就会一直存储在右子树上,构成一个斜树。这时在对其做查找时,效率一样很低。那么在构建二叉搜索树的时候,怎么解决这样问题呢?接下来我们介绍一下利用平衡二叉树解决二叉搜索树失衡的问题。1. 平衡二叉树构建分析平衡二叉树:是一种二叉排序树,其中每一个结点的左右子树的高度差至多等于1。原创 2020-05-22 16:56:24 · 7534 阅读 · 3 评论 -
数据结构与算法--关于查找的常见算法
数据结构与算法--关于查找的常见算法1. 静态查找1.1 顺序查找1.2 折半查找1.3 插值查找1.4 裴波拉契查找2. 动态查找(二叉搜索树)1. 静态查找静态查找包括:顺序查找、插值查找、二分查找、裴波拉契查找1.1 顺序查找顺序查找,又称为线性查找。是最基本的查找技术。其查找过程:从表中的第一个或者最后一个记录开始,逐个比较关键字和给定值。若相等,则查找成功,找到所查记录;如果查找完,关键字和给定值都不相等,则没有所查记录。代码实现:// a为数组,n为查找的数组个数,key为要查找的关原创 2020-05-21 00:14:18 · 620 阅读 · 0 评论 -
数据结构与算法--图的应用拓扑排序 & 关键路径
数据结构与算法--图的应用拓扑排序 & 关键路径1. 拓扑排序2. 关键路径1. 拓扑排序拓扑排序简介假设在如下面的一张 有向图 中,顶点表示活动,弧表示活动之间的优先关系,这样的 有向图 顶点表示活动网,我们称之为 AOV 网。 上面 AOV 网的路径为:V1 -> V2 -> V3 -> V4 -> V5 或者 V1 -> V2 -> V3 -> V4 -> V5设 G = (V,E)是一个具有 n个 顶点的 有向图,V 中原创 2020-05-19 19:33:13 · 490 阅读 · 0 评论 -
数据结构与算法--图的应用之最短路径
数据结构与算法--图的应用之最短路径前言1. Dijkstra 算法2. 佛洛依德(Floyd)算法前言 上一篇简单的介绍了图的应用之最小生成树的两种求解方法,本篇来了解一下关于 图的最短路径 的两种求解方法首先看下面的图,从上图中可以很直观的看出:最短路径:V0 -> V1 -> V2 -> V4 -> V3 -> V6 -> V7 -> V8最短路径权值和: 1 + 3 + 1 + 2 + 3 + 2 + 4 = 16那么最短路径怎么求解呢?接原创 2020-05-13 19:44:06 · 622 阅读 · 0 评论 -
数据结构与算法 -- 图的应用之最小生成树问题
数据结构与算法 -- 图的应用之最小生成树问题前言1.最小生成树问题2.最小生成树求解(普里姆(Prim)算法)2.最小生成树求解(克鲁斯卡尔算法)前言 前面对 图的存储 和 **图的遍历(广度优先/深度优先)**做了简单的学习和了解,本篇文章,学习一下最小生成树的问题,以及对应解决这个问题的两种算法 普里姆算法 和 克鲁斯卡尔算法1.最小生成树问题首先看下面一道面试题:假设目前有N...原创 2020-05-07 21:27:58 · 569 阅读 · 0 评论 -
数据结构与算法--图的遍历方式(深度遍历和广度遍历)
数据结构与算法--图的遍历方式(深度遍历和广度遍历)1. 图的深度优先遍历2. 图的广度优先遍历1. 图的深度优先遍历深度优先搜索算法:数据结构是栈。通过将顶点存入栈中,沿着路径探索顶点,存在新的相邻顶点就去访问邻接矩阵深度遍历思路:1.将图的顶点和边的信息输入到图结构中2.创建一个数组,用来标识顶点是否已经被遍历过3.初始化数组,将数组中元素置位 False4.选择顶点开始遍历(注...原创 2020-05-06 14:55:02 · 829 阅读 · 0 评论 -
数据结构与算法--图的存储方式
数据结构与算法--图的存储方式 1. 图的定义2. 图的存储2.1. 图的存储介绍2.2. 邻接矩阵2.3. 邻接表1. 图的定义定义:图是由顶点的有穷非空结合和顶点之间的集合组成,数据元素(顶点)之间具有任意关系,图中任意两个数据元素之间都可能相关各种图:无向图(顶点到顶点之间的边没有方向,则称这条边为无向边)有向图(若从顶点 到顶点 的边有方向,则称这条边为有向边,也称...原创 2020-05-06 12:40:12 · 394 阅读 · 0 评论 -
数据结构与算法 -- 哈夫曼树&哈夫曼编码
数据结构与算法 -- 哈夫曼树&哈夫曼编码前言1. 哈夫曼树2. 哈夫曼编码3. 哈夫曼树 & 哈夫曼编码 的实现前言 上一篇了解学习了线索化二叉树的一些知识,这一篇,对哈夫曼树和哈夫曼编码来做一个了解学习。首先,我们先看一个经典的问题,等级优秀良好中等及格不及格考分90 <= 分数 <= 10080 <= 分数 <...原创 2020-04-30 23:08:28 · 3047 阅读 · 1 评论 -
数据结构与算法--线索化二叉树
数据结构与算法--线索化二叉树前言1. 线索化二叉树初探2. 线索化二叉树实现前言 前一篇简单的对二叉树进行初探,简单的了解了一下二叉树的一些概念,和二叉树的 顺序存储 和 链式存储 以及二叉树的一些简单操作,和二叉树的几种遍历方式。这一篇,我们在对二叉树进行了解,假如这个二叉树有很多的叶子节点,那么叶子节点的左孩子和右孩子的指针空间是否会浪费呢?1. 线索化二叉树初探如开篇提到的,假如...原创 2020-04-29 17:43:47 · 442 阅读 · 1 评论 -
数据结构与算法--二叉树的顺序存储&链式存储
数据结构与算法--二叉树的顺序存储&链式存储1. 树的相关概念2. 二叉树的顺序存储2.1 顺序二叉树的基本操作2.2 二叉树的遍历3. 二叉树的链式存储3.1 链式二叉树的基本操作3.2 链式二叉树的遍历1. 树的相关概念根节点(Root):树的顶部节点子节点(Child):离开根节点时直接连接到另一个节点的节点。叶子节点(Leaf):没有子节点的节点边(Edge):一个节点与...原创 2020-04-27 11:35:13 · 1150 阅读 · 0 评论 -
数据结构与算法 -- 字符串匹配 KMP算法
数据结构与算法 -- 字符串匹配 KMP算法字符串匹配KMP算法 原理next 数组的推导KMP 算法代码实现KMP 算法优化KMP 算法优化实现字符串匹配题目:给一个仅包含小写字母的字符串主串 S = abcacabdc,模式串 T = abd,请查找出模式串在主中第一次出现的位置;提示:主串和模式串均为小写字母KMP算法 原理对于这道算法题的解法,之前结束了BF算法和RK算法...原创 2020-04-26 15:32:42 · 451 阅读 · 0 评论 -
数据结构与算法--字符匹配 & 字符去重
数据结构与算法--字符匹配 & 字符去重1. 去除重复字母2. 字符串匹配2.1 BF算法-爆发匹配算法2.2 RK算法1. 去除重复字母题目给你一个仅包含小写字母的字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)示例1:输入:"bcabc"输出:"abc"示例2:输入:"cbacdcbc"...原创 2020-04-24 13:23:00 · 391 阅读 · 0 评论 -
数据结构与算法--几个算法题目
数据结构与算法--几个常见算法题目1. 括号匹配检验2. 十进制转8进制3. 杨辉三角4.爬楼梯问题5. 每日温度问题6. 字符串编码问题1. 括号匹配检验题目: 假设表达式中允许包含两种括号:圆括号与方括号,其嵌套顺序随意,即([]())或者[([][])]都是正确的。而这[(]或者(()])或者([()) 都是不正确的格式。检验括号是否匹配的方法可用“期待的急迫程度”这个概念来描述。...原创 2020-04-22 19:43:16 · 447 阅读 · 0 评论 -
数据结构与算法之如何基于顺序存储和链式存储设计一个队列
数据结构与算法之如何基于顺序存储和链式存储设计一个队列前言1. 队列的结构2. 顺序存储队列的设计2.1 顺序存储队列的设计2.2 顺序存储队列的基本操作3. 链式存储队列的设计3.1 链式存储队列的设计3.2 链式存储队列的基本操作前言 上一篇,我们学习了栈的结构,以及基于顺序存储和链式存储两个不同角度如何设计一个栈,以及一些对栈的常规操作。那么栈本篇来看一下队列的结构,...原创 2020-04-14 21:34:00 · 389 阅读 · 0 评论 -
数据结构与算法之如何基于顺序存储/链式存储不同角度设计一个栈
数据结构与算法之如何基于顺序存储/链式存储不同角度设计一个栈前言1. 栈的结构2. 顺序存储的栈2.1 顺序存储栈的设计2.2 顺序存储栈的操作3. 链式存储的栈3.1 链式存储栈的设计3.2 链式存储栈的操作4.栈和递归递归过程和递归工作栈前言前面几篇,我们学习了关于线性表的顺序存储以及链式存储,并对链式存储方式的单向链表、单向循环链表、双向链表和双向循环链表的基本操作有了一定的了解...原创 2020-04-12 00:40:14 · 222 阅读 · 0 评论 -
数据结构与算法之线性表算法练习
数据结构与算法之线性表算法练习前言题目一题目二题目三题目四题目五题目六题目七前言前面了解学习了线性表的单向链表和单线循环链表和双向链表的一些知识,本篇搞几个算法题实战一下。首先,做下面准备代码:#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0// 存储空间初始分配量#define MAXSIZE 20type...原创 2020-04-10 19:59:40 · 417 阅读 · 0 评论 -
数据结构与算法之线性表单向循环链表
数据结构与算法之线性表单向循环链表1. 单向循环链表概念2. 单向循环链表的操作2.1. 单向循环链表的创建2.2. 单向循环链表的遍历2.3. 单向循环链表的插入2.4. 单向循环链表的删除2.5. 单向循环链表的简单查询在上一篇《数据结构与算法之基础篇》中,了解了算法和数据结构的一些概念问题,以及线性表顺序存储和单链表的创建、插入、删除等一些操作。这一篇来了解一下线性表单向循环链表的一...原创 2020-04-05 18:53:37 · 292 阅读 · 0 评论