数据结构与算法
文章平均质量分 65
RONG LU.
这个作者很懒,什么都没留下…
展开
-
堆和堆排序详解
手写堆与堆排序 Heap堆 堆是一棵完全二叉树,因此我们可以用数组来存储堆,而不是用链表存储。 从数组的下标0开始存储元素,nums[0]存储的是这棵二叉树的root节点,nums[1]存储root节点的左子树节点,nums[2]存储root节点的右子树节点。 那么针对元素 nums[x],它的左子树是nums[2x+1],右子树是nums[2x+2]。 class Heap{ private int size=0; private int max_size; private in原创 2022-05-07 23:20:37 · 453 阅读 · 0 评论 -
Java实现冒泡排序
冒泡排序是一种不断交换相邻的元素的排序,一些元素在不断得被交换中,就像水中冒泡一样,因此得名冒泡排序。 算法原理 1.比较相邻的元素,如果前面元素比后面元素要小,那么则交换这两个元素。 2.对每一组相邻的元素都进行比较,从开始的第一对元素到结尾的最后一对元素依次进行比较,叫做一次冒泡。经过一次冒泡后,能保证最大的元素在最后 3.如果说数组有n个元素,进行1次冒泡后能保证最后1个元素是最大的,也就是说进行1次冒泡能保证排完最后1个元素。那么进行n-1次冒泡后,能保证排完n-1个元素,n-1个元素排序完成,那么原创 2020-10-28 15:44:47 · 415 阅读 · 4 评论 -
斐波那契数列的五种实现方式
斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你 n ,请计算 F(n) 。 暴力递推 class Solution { public int fib(int n) { if(n==0)return 0; else if(n==1)return 1;原创 2021-10-22 21:20:43 · 2833 阅读 · 0 评论 -
路径压缩加权并查集模板
public class UF { private int[] id;//连通分量id private int[] sz;//分量权重 private int count;//分量数量 public UF(int n){ id=new int[n]; sz=new int[n]; count=n; for (int i = 0; i <n; i++) { id[i]=i;//每个分.原创 2021-05-20 22:12:59 · 118 阅读 · 0 评论