Java数据结构与算法
文章平均质量分 81
用java编写各种数据结构和算法
晏楠先生
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Java数据结构于算法】哈希表
哈希表哈希表的基本介绍代码实现 哈希表的基本介绍 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 比如:总共有15个链表,id为111的数据该放入哪个链表? 111%15=7,所以就放到编号为7的链表里 图解: HashTab管理数组,每个数组都存了一个EmpLinkedList链表,用取模法来判断id放入哪个链表里,然后原创 2022-02-08 17:28:37 · 144 阅读 · 0 评论 -
【Java数据结构与算法】排序七大算法,包括冒泡排序,选择排序,插入排序,希尔排序,快速排序,归并排序,基数排序
七大排序算法一、冒泡排序二、选择排序三、插入排序四、希尔排序对有序序列在插入时采用交换法对有序序列在插入时采用移动法, (就是使用了插入法)五、快速排序六、归并排序七、基数排序 一、冒泡排序 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中原创 2022-02-07 17:29:22 · 2256 阅读 · 1 评论 -
【Java数据结构与算法】递归与回溯法 包含迷宫回溯,八皇后问题,详细分析了回溯的实现,还有如何判断数组斜方的操作
递归一、递归的概念与调用机制1.打印问题2.阶乘问题二、递归需要遵守的重要规则三、递归-迷宫问题四、八皇后问题(回溯算法)解决思路上代码分析与总结 一、递归的概念与调用机制 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 我列举两个小案例: 1.打印问题 test(4) /////// public static void test(int n) { if (n > 2) { test(n - 1); } System.out原创 2022-02-05 12:02:17 · 538 阅读 · 0 评论 -
【Java数据结构与算法】栈与逆波兰表达式 内含:逆波兰计算器,中缀表达式转后缀表达式,关于matches()方法的使用
栈栈的介绍一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 栈的介绍 栈是一个先入后出(FILO-First In Last Out)的有序列表。 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。 根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除 出栈(pop)和入.原创 2022-02-04 02:49:03 · 180 阅读 · 0 评论 -
【Java数据结构与算法】链表 包含:单链表,双向链表,环形链表,约瑟夫问题
链表链表(Linked List)介绍一、单向链表代码实现二、单链表面试题求单链表中有效节点的个数查找单链表中的倒数第k个结点 【新浪面试题】单链表的反转【腾讯面试题】方法一:创建新链表来保存数据方法二:使用栈的数据结构从尾到头打印单链表 【百度,要求方式1:反向遍历 。 方式2:Stack栈】 链表(Linked List)介绍 1 链表是以节点的方式来存储,是链式存储 2 每个节点包含 data 域, next 域:指向下一个节点. 3 如图:发现链表的各个节点不一定是连续存储. 4 链表分带头节点的原创 2022-02-02 20:46:16 · 217 阅读 · 0 评论 -
【Java数据结构与算法】数组模拟队列与数组模拟环形队列
队列队列介绍一、数组模拟队列思路分析问题分析二、数组模拟环形队列 队列介绍 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 一、数组模拟队列 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front及 rear分别记录队列前后端的下标,front 会随着数据输出而改变,而 rear则是随原创 2022-02-01 19:42:27 · 1198 阅读 · 0 评论 -
【Java数据结构与算法】稀疏数组,包括io存盘与不存盘两种
稀疏数组为什么要有稀疏数组?一、稀疏数组的处理方法二、应用实例1.不存盘情况2.存入磁盘情况 为什么要有稀疏数组? 当我们在编写五子棋的棋盘时,有存盘退出和续上盘的功能。但是当我们用1和2保存黑白棋时,很多时候会出现数组里只有少数1与2,其余都是0,这样保存棋盘时就会出现很多无用的0。 因此应对这种情况,我们常常会使用稀疏数组来减少程序规模 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 一、稀疏数组的处理方法 记录数组一共有几行几列,有多少个不同的值 把具有不同值原创 2022-01-31 00:51:10 · 136 阅读 · 0 评论 -
【Java数据结构与算法】线性表
线性表线性表的介绍一、顺序表二、链表三、栈四、队列 线性表的介绍 一、顺序表 二、链表 三、栈 四、队列原创 2021-09-28 23:26:03 · 240 阅读 · 0 评论 -
【计算机算法与设计 C++版 】回溯法
回溯法递归回溯迭代回溯用回溯法求解背包问题方案1:生成所有子集逐个检查方案2:先按单价排序...旅行售货员问题旅行售货员问题——方案1旅行售货员问题——方案2 递归回溯 //P117递归回溯 //思想→不可运行 /* void Backtrack(int t)//t为解空间树的层数 { if(t>n)//递归出口,n为元素个数,若有n个元素,解空间树应有n层,所以若t>n说明已经找到解空间数中的一个死结点(子集) Output(x); else { for(int i=f(n原创 2021-03-20 17:18:48 · 219 阅读 · 0 评论 -
【计算机算法与设计 C++版 】贪心算法
贪心算法前言一、活动安排问题1.问题描述2.例 当前有4个活动3.程序实现推广二、贪心算法的基本要素1、贪心选择性质2、最优子结构性质3、贪心算法和动态规划算法的差异4.物品不可分——0-1背包问题 前言 贪心算法总是做出在当前看来是最好的选择。 也就是说,贪心算法并不是从整体最优上加以考虑,它所做出的选择只是某种意义上的局部最优选择。 当然,我们希望贪心算法得到的最终结果也是整体最优的。 具有最优子结构性质的问题,可以用动态规划算法来解决,但是用贪心算法更简单,更直接且解题效率更高。 总结:问题逐步求原创 2021-03-20 15:47:19 · 571 阅读 · 0 评论 -
【计算机算法与设计 C++版 】动态规划
动态规划前言一、矩阵连乘问题用动态规划法解矩阵连乘的最优计算次序问题二、动态规划算法的基本要素1、最优子结构2、重叠子问题3、备忘录方法 前言 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 不同: 适用于动态规划法求解的问题,经分解得到的原创 2021-03-20 13:20:37 · 511 阅读 · 0 评论 -
【计算机算法与设计 C++版 】递归与分治策略
递归与分治策略1.递归的概念①阶乘函数②Fibonacci数列Ackerman函数——双递归函数2.分治法的基本思想 1.递归的概念 递归算法 直接或间接地调用自身的算法称为递归算法。 递归函数 用函数自身给出定义的函数称为递归函数。 由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问题与原创 2021-03-20 11:00:56 · 346 阅读 · 0 评论
分享