数据结构与算法
文章平均质量分 83
三横同学
趁还有时间,尽自己最大的努力,拼尽全力去做成最想做的那件事,成为最想成为的那种人,过着最想过的那种生活。用百倍的努力去看看这个世界,这个世界肯定比你想的要更精彩。
展开
-
数组、链表、队列、栈数据结构特点,各自优点和缺点
数组、链表、队列、栈的特点与优缺点原创 2023-03-09 10:46:06 · 749 阅读 · 0 评论 -
数据结构与算法——图
图图基本介绍为什要有图?1)前面我们学了线性表和树2)线性表局限于一个直接前驱和一个直接后继的关系3)树也只能有一个直接前驱也就是父节点4)当我们需要表示多对多的关系时,这里我们就用到了图图的举例说明:图的常用概念:图的表示方式:图的入门案例1)案例2)思路分析(1)存储顶点String使用ArrayList(2)保存矩阵int[][] edges3)代码实现:package com.iswhl.graph;import java.util.ArrayList原创 2022-05-02 16:28:35 · 778 阅读 · 0 评论 -
数据结构与算法——树的进阶
树的进阶二叉排序树二叉排序树介绍二叉排序树:BST: (Binary Sort(Search) Tree),对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点比如针对前面的数据(7,3,10,12,5,1,9),对应的二叉排序树为:二叉排序树创建和遍历一个数组创建成对应的二叉排序树,并使用中序遍历二叉排序树,比如:数组为Array(7,3,10,12,5,1,9),心创建成对应的二叉排原创 2022-05-02 16:26:28 · 605 阅读 · 0 评论 -
数据结构与算法——树
树树结构基础部分二叉树为什么需要树这种数据结构1)数组存储方式的分析:优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低**[示意图]**画出操作示意图:2)链式存储方式的分析**优点:**在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可,删除效率也很好)。**缺点:**在进行检索时,效率仍然较低,比如(检索某个值,需要从头节点开始遍历)【原创 2022-04-30 15:57:19 · 986 阅读 · 0 评论 -
数据结构与算法——哈希表
哈希表看一个实际需求,google公司的一个上机题:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…)当输入该员工的id时,要求查找到该员工的所有信息.要求:不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列)哈希表的基本介绍 散列表( Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的原创 2022-04-28 17:05:41 · 1634 阅读 · 0 评论 -
数据结构与算法——查找算法
查找算法查找算法介绍在java中,我们常用的查找有四种:顺序(线性)查找二分查找/折半查找插值查找斐波那契查找线性查找算法有一个数列:{1,8,10,89,1000,1234},判断数列中是否包含此名称【顺序查找】要求:如果找到了,就提示找到,并给出下标值。思路:如果查找到全部符合条件的值。[思路分析.]代码实现package com.iswhl.search;public class SeqSearch { public static void main(Stri原创 2022-04-25 16:26:11 · 609 阅读 · 0 评论 -
数据结构与算法——排序算法
排序算法排序算法的介绍排序也称排序算法(Sort Algorithm),排序是将—组数据,依指定的顺序进行排列的过程。排序的分类:1)内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。2)外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。3)常见的排序算法分类(见下图)算法的时间复杂度度量一个程序执行时间的两种方法:1)事后统计的方法这种方法可行,但是有两个问题:一.是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二.是所得时间的统原创 2022-04-25 16:22:19 · 1820 阅读 · 0 评论 -
数据结构与算法——递归
递归递归调用的规则:1:当程序执行到一个方法时,就会开辟一个独立的空间(在栈区)2:每个空间的数据(局部变量)是独立的①通过打印问题回顾递归调用的机制==分析:==当程序执行到主方法时,首先在栈里面开辟一个独立的空间,这个空间其实是一个栈,从数据结构来讲,底层编译原理用的是栈,首先调用了test(4),根据递归的调用规则,它会立即开辟一个新栈,此时n=4,n>2,调用test(3),又会开辟一个新栈,调用test(2),又会开辟一个新栈,n不大于2,(当n不大于2是,执行输出的方法,然原创 2022-04-23 15:35:27 · 968 阅读 · 0 评论 -
数据结构与算法——栈
栈(stack)介绍1)栈的英文为(stack)2)栈是一个先入后出(FILO-First In Last Out)的有序列表。3)栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。4)根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除5)图解方式说明出栈(pop)和入栈(原创 2022-04-23 11:19:39 · 858 阅读 · 0 评论 -
数据结构与算法——双向链表
双向链表使用带head头的双向链表实现-水浒英雄排行榜管理单向链表的缺点分析:1)单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。2)单向链表不能自我删除,需要靠辅助节点,而双向链表,则可以自我删除,所以前面我们单链表删除时节点,总是找到temp,temp是待删除节点的前一个节点(认真体会).3)示意图帮助理解删除实现思路:分析双向链表的遍历,添加,修改,删除的操作思路===》代码实现1)遍历方式和单链表一样,只是可以向前,也可以向后查找2)添加(默认添加到双向链表的最原创 2022-04-23 09:48:18 · 593 阅读 · 0 评论 -
数据结构与算法——单链表
链表小结上图:链表是以节点的方式来存储, 是链式存储每个节点包含 data 域, next 域:指向下一个节点.如图:发现 链表的各个节点不一定是连续存储.链表分 带头节点的链表和 没有头节点的链表,根据实际的需求来确定单链表单链表看似连续 但是并不是 这只是逻辑结构不考虑排名过程:添加(创建)1.先创建一个head头节点,作用就是表示单链表的头2.后面我们每添加一个节点,就直接加入到链表的最后遍历:3.通过一个辅助变量,帮助遍历整个链表//小的知识点:1.在原创 2022-04-20 18:11:43 · 673 阅读 · 0 评论 -
数据结构与算法——队列
队列队列介绍队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出示意图:(使用数组模拟队列示意图)上图的清晰图 rear待表队列的尾部 front代表数据的头部 存入数据时 front不变 rear变化 存数据时 rear位置不变 front 的位置在变化数组模拟队列思路rear == maxSize-1 为满 front指向队列头部的头一个位置 rear指向队列尾部的具体位置队列数组代码实现package原创 2022-04-18 19:42:29 · 304 阅读 · 0 评论 -
数据结构与算法——稀疏数组
数据结构与算法1.线性结构和 非线性结构线性结构:数组、队列、链表、栈**非线性结构:**二维数组、多维数组、广义表、树结构、图结构2.稀疏数组SparseArray**需求:**记录棋盘的位置 可用用二位数组将它保存 ,但是会发现记录很多没有意义的数据很多空间浪费 可以用稀疏数组进行优化介绍:稀疏数组就是压缩缩多余的冗余数据稀疏数组的处理方法是:1)记录数组一共有几行几列(在稀疏数组中的第一行里进行记录),有多少个不同的值(在稀疏数组中的第其它行里进行记录)2)把具有不同值的元素的行列原创 2022-04-18 19:41:00 · 635 阅读 · 0 评论