Java 数据结构与算法
文章平均质量分 86
以Java语言来呈现 数据结构与算法
逆流者blog
不登高山,不知天之高也;不临深溪,不知地之厚也。
展开
-
Java数据结构和算法(一) 基本介绍
简介数据结构(data structure)是相互之间存在一种或多种特定关系的数据元素的集合,是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。程序 = 数据结构 + 算法,数据结构是算法的基础。线性结构和非线性结构数据结构包括:线性结构和非线性结构。线性结构线性结构作为最常用的数据结构,其特点是 数据元素之间存在一对一的线性关系;线性结构有两种不同的存储结构,即 顺序存储结构( 数组)和 链式存储结构( 链表)。顺序存储的线性表称原创 2020-09-02 16:53:31 · 266 阅读 · 0 评论 -
Java数据结构和算法(二) 稀疏数组
简介当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理记录数组 一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而 缩小程序的规模我们都玩过五子棋,在五子棋程序上面有存盘退出和续上盘等功能,这里面就用到了稀疏数组,下面用代码具体演示下。代码实现在这里插入代码片...原创 2020-08-29 23:10:28 · 78 阅读 · 0 评论 -
Java数据结构和算法(三) 数组模拟队列
简介队列是一个 有序列表,可以用 数组或是 链表来实现。遵循 先入先出的原则。即: 先存入队列的数据,要先取出。后存入的要后取出。数组模拟队列队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front 及 rear 分别记录队列前后端的下标,front 会随着数据输出而改变,而 rear 则是随着数据输入而改变,如图所示:当我们将数据存入队列时原创 2020-08-29 23:11:34 · 172 阅读 · 0 评论 -
Java数据结构和算法(四) 链表
链表(Linked List)介绍链表是有序的列表,但是它在内存中是存储如下:链表是以节点的方式来存储, 是链式存储每个节点包含 data 域, next 域:指向下一个节点.如图:发现 链表的各个节点不一定是连续存储.链表分 带头节点的链表和 没有头节点的链表,根据实际的需求来确定单链表(带头结点) 逻辑结构示意图:...原创 2020-09-07 17:54:25 · 103 阅读 · 0 评论 -
Java数据结构和算法(五)栈
介绍栈(stack)是一个 先入后出(FILO-First In Last Out) 的有序列表。栈(stack) 是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。 允许插入和删除的一端,为 变化的一端,称为栈顶(Top) ,另一端为 固定的一端,称为栈底(Bottom) 。根据栈的定义可知 , 最先放入栈中元素在栈底 , 最后放入的元素在栈顶 , 而删除元素刚好相反 , 最后放入的元素最先删除,最先放入的元素最后删除图解 【说明出栈(pop) 和入栈(push)】栈原创 2020-09-11 23:30:07 · 169 阅读 · 0 评论 -
Java数据结构和算法(六)递归
概念递归就是方法自己调用自己,每次调用时 传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。原创 2020-09-21 17:17:10 · 243 阅读 · 0 评论 -
Java数据结构和算法(七)排序算法
1 排序算法的介绍排序也称排序算法(SortAlgorithm),排序是将 一组数据,依 指定的顺序进行 排列的过程。2 排序的分类内部排序:指将需要处理的所有数据都加载到 内部存储器( 内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助 外部存储( 文件等)进行排序。常见的排序算法分类:3 算法的时间复杂度3.1度量一个程序(算法)执行时间的两种方法事后统计的方法这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序原创 2020-09-24 11:26:59 · 108 阅读 · 0 评论 -
Java数据结构和算法(八)排序算法之冒泡排序
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始), 依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置, 如果一趟比较下来没有进行过交换 , 就说明序列有序,因此要在排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。...原创 2020-09-24 11:28:10 · 210 阅读 · 0 评论 -
Java数据结构和算法(九)排序算法之选择排序
选择式排序也属于内部排序法,是从排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。原创 2020-09-24 11:30:41 · 199 阅读 · 0 评论 -
Java数据结构和算法(十)排序算法之插入排序
插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。原创 2020-09-24 11:31:06 · 98 阅读 · 0 评论 -
Java数据结构和算法(十一)排序算法之希尔排序
希尔排序是希尔(Donald Shell)于 1959 年提出的一种排序算法。希尔排序也是一种 插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。随着增量逐渐减少,每组包含的关键词越来越多, 当增量减至 1 时,整个文件恰被分成一组,算法便终止。结论: 当 需要插入的数是较小的数时,后移的次数明显增多,对效率有影响.希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;我们看简单的插入排序可能存在的问题....原创 2020-11-27 12:08:51 · 107 阅读 · 0 评论 -
Java数据结构和算法(十二)排序算法之快速排序
快速排序(Quicksort)是对 冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序, 整个排序过程可以递归进行,以此达到整个数据变成有序序列。...原创 2020-12-01 17:08:29 · 62 阅读 · 0 评论 -
Java数据结构和算法(十三)排序算法之归并排序
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的 分治 (divide-and-conquer )策略(分治法将问题分(divide)成一些 小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。...原创 2020-12-04 14:45:23 · 64 阅读 · 0 评论 -
哈希表
哈希表散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。实际问题有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查找到该员工的 所有信息。要求:不使用数据库,速度越快越好=>哈希表(散列)添加时,保证按照 id 从低到高插入 [课后思考: 如果原创 2020-12-18 11:29:10 · 86 阅读 · 0 评论 -
查找算法
查找算法常用的查找算法:顺序(线性)查找二分查找/折半查找插值查找斐波那契查找线性查找算法有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值。public class SeqSearch { public static void main(String[] args) { int[] arr = {1,8, 10, 89, 1000, 1234};原创 2020-12-18 10:52:23 · 96 阅读 · 0 评论 -
Java数据结构和算法(十五)排序算法对比
比较原创 2020-12-18 10:51:20 · 57 阅读 · 0 评论 -
Java数据结构和算法(十四)排序算法之基数排序
将数组 {53, 3, 542, 748, 14, 214} 使用基数排序, 进行升序排序。原创 2020-12-04 14:38:34 · 91 阅读 · 0 评论