数据结构
文章平均质量分 79
Fuzz_
这个作者很懒,什么都没留下…
展开
-
java平衡二叉树
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),它是一棵空树,或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1,这个类似于一个递归的数列,可以参考Fibonacci数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量。平衡二...原创 2018-06-15 15:35:33 · 288 阅读 · 0 评论 -
java的二叉树结构
首先,我们先来介绍一下二叉树的概念 二叉树:二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2...原创 2018-06-15 00:29:36 · 3560 阅读 · 1 评论 -
java的链式存储结构
首先,我们应该先了解计算机内部的物理存储结构。计算机的主要外存就是软盘和硬盘,现在光说硬盘,硬盘是由一个个盘面组成的,每个盘面上由两个磁头读取数据(正反面)。每个盘面上分为若干个扇区。这里主要用到堆和栈。堆是存储的是数组和对象(其实数组就是对象),凡是new建立的都是在堆中,堆中存放的都是实体(对象),实体用于封装数据,而且是封装多个(实体的多个属性),如果一个数据消失,这个实体也没有消失,还可以...原创 2018-05-30 00:48:21 · 5116 阅读 · 0 评论 -
Java实现堆排序和图解
堆排序:堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构...原创 2018-09-08 01:31:01 · 48117 阅读 · 25 评论 -
Java的直接插入排序
直接插入排序 直接插入排序是一种简单插入排序,基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程 类似我们摸牌,一开始有一堆牌(待排序的)。由于第一次摸牌时手中没牌,所以不需要排序。第二次摸牌时和手中第...原创 2018-09-12 01:47:18 · 119 阅读 · 0 评论 -
Java实现简单的冒泡排序
冒泡排序 它适合数据规模很小的时候,而且它的效率也比较低,但是作为入门的排序算法,还是值得学习的。 什么是冒泡排序? 顾名思义,像水里吐的泡泡一样,因为水越深压强越大,而泡泡的在水里的由深变浅。所以,同样的气体体积,第一个出来的泡泡比第二个出来的要大。如下图所示 冒泡排序的Java代码public class Bubble { /** * 冒泡排序算法...原创 2018-09-12 01:51:54 · 765 阅读 · 0 评论 -
Java实现快速排序(快排)
快速排序是冒泡排序的改进版,也是最好的一种内排序,在很多面试题中都会出现,也是作为程序员必须掌握的一种排序方法。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。下面我们...原创 2018-09-07 02:12:49 · 92370 阅读 · 19 评论