数据结构
脱发症患者
这个作者很懒,什么都没留下…
展开
-
JAVA实现大顶堆的建立,删除以及排序
参考博客:1.大顶堆的排序,插入,删除2.图解堆排序3.堆相关知识1.堆的建立——建立大顶堆思路: 1) 从最后一个节点的父节点(list.size()/2-1)开始,向下调整,建立大顶堆; 2) 比较父节点与孩子节点的大小: 2.1 若父节点小于左节点,将左节点跟父节点交换,继续向下调整。 2.2 若父节点大于左节点,将左节点跟父节点交换,继续向下调整。参数: index:表示最初传进来的索引 size:表示集合的大小相关代码:/* *原创 2020-09-03 17:19:37 · 537 阅读 · 0 评论 -
Java实现在大顶堆中添加数据
参考博客:堆的相关知识在大顶堆中添加数据。将要添加数据Insert_data追加到数组末尾。比较Insert_data与其父节点的大小。2.1 若是父节点的值大于Insert_data,则该处就是该数据要插入的位置。2.2 若是父节点的值小于Insert_data,交换两个值,并向上寻找其父节点再进行比较,直到与根节点。代码实现:import java.util.Arrays;import java.util.Scanner;public class HeapDataInsert {原创 2020-08-30 19:30:48 · 735 阅读 · 0 评论 -
JAVA实现全排列深度优先搜索算法
参考《啊哈!算法》一书,P79页。题目要求:将N张牌放在N个桶里面,问有多少种放法?本质是全排列问题。个人理解:使用深度优先搜索方法,初始时不能理解为什么会产生回溯,个人理解为断点处的再执行。例如代码中使用函数递归,dfs(1)中调用dfs(2),dfs(2)中调用dfs(3)等等。for(int i =1;i<=n;i++) { if(book[i] == 0) { arr[step] = i; book[i] = 1; dfs(step+1);原创 2020-08-05 20:57:28 · 570 阅读 · 0 评论 -
JAVA语言实现使用栈进行回文串的匹配
参考《啊哈!算法》一书,P34页程序。栈:先进后出(压弹)一个变量:栈顶变量top对栈顶进行删除和添加题目:回文字符串的判断要求1): 使用栈的思想做;要求2): 是回文串输出true,不是输出false;完整代码如下:import java.util.Scanner;public class Stack { char [] ch; public Stack(){ ch = new char [0]; } //压栈 -添加元素 public void原创 2020-08-04 16:27:55 · 547 阅读 · 0 评论