![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
尚硅谷数据结构与算法笔记
文章平均质量分 56
啦啦啦
Ooo.OO.ooO
这个作者很懒,什么都没留下…
展开
-
插值查找算法
插值查找原理插值查找算法类似于二分查找,不同的是插值查找每次从自适应 mid 处开始查将二分查找中的求 mid 索引的公式 , 左边索引 left, 右边索引 right ,mid = (left + right ) / 2 = left + (right - right) / 2 = left + 1 / 2 * (right - left)而插值查找,则将mid =left + 1 / 2 (right - left) 的 式子改为1 / 2 不再是固定的,而是mid = left + (ke原创 2021-07-04 13:05:06 · 143 阅读 · 0 评论 -
基数排序(桶排序)
基数排序(桶排序)介绍:基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或 bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法基数排序(Radix Sort)是桶排序的扩展基数排序是 1887 年赫尔曼·何乐礼发明的。它是这样实现的:将整数按位数切割成不同的数字,然后按每个位数分别比较。基数排序基本原创 2021-06-30 10:13:36 · 430 阅读 · 0 评论 -
中缀表达式转后缀表达式并计算
中缀表达式就是平常的式子如: (3+4)×5-6,转化为逆波兰表达式(后缀表达式)为: 3 4 + 5 × 6 -3 4 + 5 × 6 - 计算步骤:1.从左至右扫描,将 3 和 4 压入堆栈;2.遇到+运算符,因此弹出 4 和 3(4 为栈顶元素,3 为次顶元素),计算出 3+4 的值,得 7,再将 7 入栈;3.将 5 入栈;4.接下来是×运算符,因此弹出 5 和 7,计算出 7×5=35,将 35 入栈;5.将 6 入栈;6.最后是-运算符,计算出 35-6 的值,即 29,由..原创 2021-06-29 15:27:32 · 225 阅读 · 0 评论 -
希尔排序
希尔排序希尔排序的思想是使数组中任意间隔为 h 的元素都是有序的。这样的数组被称为 h 有序数组。简单来说,希尔排序和插入排序一致,但插入排序是比较和操作相邻的元素,希尔排序是比较和操作相邻h的元素。希尔排序的效率取决于增量值h的选取,时间复杂度并不是一个定值。开始时,h取值较大,子序列中的元素较少,排序速度快,克服了直接插入排序的缺点;其次,h值逐渐变小后,虽然子序列的元素逐渐变多,但大多元素已基本有序,所以继承了直接插入排序的优点,能以近线性的速度排好序。(转自CSDN)代码实现packa原创 2021-05-13 11:38:24 · 52 阅读 · 0 评论 -
环形链表:Josephu问题
Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。单向环形链表介绍存在两个指针,一个头指针:first,一个指向尾last...原创 2021-05-06 10:59:58 · 73 阅读 · 0 评论 -
双向链表
单向链表的缺点分析单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。单向链表不能自我删除,需要靠辅助节点 ,而双向链表,则可以自我删除。对上图的说明:遍历方和 单链表一样,只是可以向前,也可以向后查找添加 (默认添加到双向链表的最后)先找到双向链表的最后这个节点temp.next = newHeroNodenewHeroNode.pre = temp修改 思路和 原来的单向链表一样删除因为是双向链表,因此,我们可以实现自我删除某个节点直接找到要删除的原创 2021-03-04 13:36:49 · 104 阅读 · 1 评论 -
单链表
链表(Linked List)介绍链表是有序的列表,但是它在内存中是存储如下链表是以节点的方式来存储,是链式存储每个节点包含 data 域, next 域:指向下一个节点.如图:发现链表的各个节点不一定是连续存储.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表(带头结点) 逻辑结构示意图如下单链表简单实现:/** * 单向链表 * * @date 2021/02/24 */public class SingleLinkedListDemo { p原创 2021-03-02 14:44:53 · 55 阅读 · 0 评论 -
队列:数组实现
队列介绍队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出示意图:(使用数组模拟队列示意图)数组模拟队列思路队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front 及 rear 分别记录队列前后端的下标,front 会随着数据输出而改变,而 rear 则是随着数据输入而改变,如图所示:原创 2021-02-25 09:52:58 · 631 阅读 · 0 评论 -
稀疏数组
当一个数组中大部分元素为0,或者为同一个值的数组时,记录了很多没有意义的数据,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模package datastructure;import java.io.File;import java.io.FileWriter;import java.io.IOException;/** * 稀疏数组 * * @date 2021原创 2021-02-24 10:00:16 · 119 阅读 · 4 评论