一.二叉树 1.满二叉树 高度为h,由2的h次-1个节点构成的二叉树称为满二叉树 2.完全二叉树 高度为h,除第h层外,其它各层节点数都到达最大节点数。且第h层的节点都连续集中在最左边 二.二叉查找树 又称二叉排序树或二叉搜索树。左子树的所有节点值均小于根节点的值,右子树所有节点值均大于根节点的值。 ...
分类:
其他好文 时间:
2020-07-04 20:29:37
阅读次数:
48
书本上只介绍到堆排序,无细讲堆,翻烂 📘掘金,找到一篇不错的图文介绍(https://juejin.im/post/5ec25b156fb9a0435a01e52e) 1. 堆 二叉树可以被细分为普通二叉树、满二叉树、完全二叉树,而今天所分享的堆这种数据结构就是一种完全二叉树。 堆中的每个结点的值 ...
分类:
其他好文 时间:
2020-07-03 12:14:54
阅读次数:
54
一、二叉树 二叉树的基本概念 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。 两种特殊的二叉树 满二叉树(Full Binary Tree) 一棵满二叉树就是高度为k,且拥有(2^k)-1个节点的二叉树,一棵满 ...
分类:
编程语言 时间:
2020-07-02 00:19:06
阅读次数:
58
基本原理堆排序的基本原理也是选择排序,只是不在使用遍历的方式查找无序区间的最大的数,而是通过堆来选择无序区间的最大的数。大致过程:1.建堆(这里是以建大顶堆为例)先把数组中的数转换成二叉树的形式,在这个基础上建堆。这里用到的大顶堆的性质:所有父节点的值要大于其子节点的值。按照这个性质,将无序的二叉树调整成堆。父节点和子节点计算:如图是一个简易的二叉树,蓝色的数字为节点的序号。计算父节点的序号要根据
分类:
编程语言 时间:
2020-07-01 09:19:44
阅读次数:
46
本博客总结学习堆排序算法,以一个数组为例,采用大根堆进行升序排序,附有代码实现。 堆排序的思想 堆排序的逻辑是建立在完全二叉树的基础上。 有两个概念必须要了解: 大根堆:每个结点值都大于等于左右孩子结点值 小根堆:每个结点值都小于等于左右孩子结点值 以大根堆为例,将根结点与最后一个结点交换,弹出根结 ...
分类:
编程语言 时间:
2020-06-30 13:03:10
阅读次数:
63
一、什么是堆? 维基百科的解释是:堆是一种特别的树状数据结构,它需要满足任意的子节点必须都大于等于(最大堆)或者小于等于(最小堆)其父节点。 二、堆排序 堆排序是通过二叉堆数据结构实现,二叉堆满足一下两个特性: 1、满足对的基本特性 2、完全二叉树,除了最底层外,其它层都已填充满,且是从左到右填充。 ...
分类:
编程语言 时间:
2020-06-27 09:18:07
阅读次数:
80
内部排序 -插入排序 -直接插入排序 -折半插入排序 -希尔排序 -交换排序 -冒泡排序 -快速排序 -选择排序 -简单选择排序 -堆排序 -归并排序 -基数排序 外部排序 -多路归并排序 1.直接插入排序 算法思路:每次将一个待排序的记录按其关键字大小插入到前面已排好序的子序列中,指导全部记录插入 ...
分类:
编程语言 时间:
2020-06-24 16:30:37
阅读次数:
52
二叉树概念 二叉树:每个节点最多有两个子节点 满二叉树:深度为K,有2^k-1个节点 完全二叉树:满二叉树属于完全二叉树,最后一层可满可不满,不满只可右部分缺失,其余层是满的 平衡二叉树:一棵空树或者左右子树的高度差的绝对值不能超过1 二分查找树:左子树节点的值比该节点的值小,右子树节点的值比该节点 ...
分类:
其他好文 时间:
2020-06-24 11:56:36
阅读次数:
58
1098 Insertion or Heap Sort (25分) According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and growing a sorted o ...
分类:
编程语言 时间:
2020-06-22 22:53:13
阅读次数:
61
记录一下自己理解的堆和堆排序吧。 堆是一种类似于完全二叉树的树形结构,对于二叉树中所有非叶子节点,如果根节点的值严格大于其两个儿子的值,则称为 大顶堆,反之称为小顶堆。 堆排序的一般步骤: 首先利用已有的数据构造一个堆,大顶堆增序,小顶堆降序。 将堆顶的元素与堆末元素交换,接着重新调整除去堆末元素的 ...
分类:
编程语言 时间:
2020-06-22 20:59:19
阅读次数:
91