数据结构与算法
WuZhiwz
这个作者很懒,什么都没留下…
展开
-
归并排序与求小和问题
归并排序与求小和问题 归并排序是递归算法一个好的实例。它的基本操作是合并两个已排序的表。然后准备三个计数器a,b,c,分别指向输入数组A,输入数组B,输出数组C的开始端。将A[a]和B[b]中较小的放入C[c],将较小数组的计数器和计数器c分别向前推进一步,进行下一步比较。当两个输入中的一个用完时,将另一个数组剩下的部分全部拷贝到C中 图中只演示了归并的一部分。剩余部分与图中类似。 以下是核心代码 public static void process(int[] array,int L,int R){原创 2022-04-12 09:38:09 · 116 阅读 · 0 评论 -
优先队列的实现
优先队列 普通队列是先进先出,优先队列分为两类 最大优先队列,每次出队的是最大元素 最小优先队列,每次出队的是最小元素 二叉堆可以轻松实现以上需求。 package Queue; import java.util.Arrays; public class MyPriorityQueue { private int[] array; private int size; public MyPriorityQueue(){ //队列初始长度 arra原创 2022-02-10 21:49:21 · 831 阅读 · 0 评论 -
二叉堆的构建,上浮以及下沉
二叉堆本质上就是完全二叉树,分为两类 最大堆,所有的父节点都大于或等于它的左右孩子节点 最小堆,所有的父节点都小于或等于它的左右孩子节点 以下代码都是以最小堆为例 二叉堆的操作 二叉堆虽然是一个完全二叉树,但是它的存储方式并不是链式存储,而是顺序存储,它所有的节点都存储在数组中。 父节点与孩子节点,父节点与父节点的父节点在数组中坐标的关系推导 插入节点 插入的节点存放在二叉堆的最后一个位置,然后将这个节点与它的父节点比较,不满足最小堆性质的就将二者交换,这就是“上浮”,再与新的父节点比较,直至上浮到正原创 2022-02-10 21:04:01 · 1131 阅读 · 0 评论 -
二叉树递归遍历,非递归遍历,层序遍历
二叉树递归遍历,非递归遍历,层序遍历 节点 private static class TreeNode{ private int data; private TreeNode leftChild; private TreeNode rightChild; public TreeNode(int data){ this.data = data; } } 首先要有一个二叉树,通过对输入序列原创 2022-02-10 11:08:27 · 434 阅读 · 0 评论