码迷,mamicode.com
首页 >  
搜索关键字:堆排序 完全二叉树    ( 2516个结果
Java实现的二叉堆以及堆排序详解
一、前言 二叉堆是一个特殊的堆,其本质是一棵完全二叉树,可用数组来存储数据,如果根节点在数组的下标位置为1,那么当前节点n的左子节点为2n,有子节点在数组中的下标位置为2n+1。二叉堆类型分为最大堆(大顶堆)和最小堆(小顶堆),其分类是根据父节点和子节点的大小来决定的,在二叉堆中父节点总是大于或等于 ...
分类:编程语言   时间:2020-09-16 12:12:33    阅读次数:31
222. 完全二叉树的节点个数
class Solution(object): # 递归思路: # (1)如果二叉树为空,节点个数为0 # (2)如果二叉树不为空,二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 1 def countNodes(self, root): """ :type root: TreeNode ...
分类:其他好文   时间:2020-09-11 14:10:52    阅读次数:39
【总结】排序算法
排序 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法 (稳定的排序是指排序前后相同的两个数的相对位置是一致的) 一.冒泡排序 1.算法描述 比较相邻元素,如果第一个比第二个大,交换位置,这样每经过一趟就冒出一个最大的 2.代码实现 p ...
分类:编程语言   时间:2020-08-19 19:14:17    阅读次数:66
数据结构--数组存储二叉树(Java)
数据结构--数组存储二叉树(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 顺序存储二叉树的特点 顺序二叉树通常只考虑完全二叉树 第n个元素的左子节点为 2 * n + 1 第n个元素的右子节点为 2 * n + 2 ...
分类:编程语言   时间:2020-08-05 13:11:12    阅读次数:68
主席树
可持久化线段树(主席树) 单点修改 ? 1.单点修改时,我们考虑将包含该点$k$的线段树节点新建出一条链。(就像这样) 每次修改将创造出$logn$个新节点。 ? ? 2.修改完的线段树不再是一颗完全二叉树,我们不能直接用层次编号,而是直接改为记录左右子节点的编号。大概的意思就是:不能用$o << ...
分类:其他好文   时间:2020-07-30 21:49:21    阅读次数:69
数据结构-二叉树
1、完全二叉树(complete binary tree)的定义 若设二叉树的深度为h,除第h层外,其他各层(1到h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树 2、满二叉树的定义(full binary tree) 满二叉树的节点要么是叶子节点,度为0,要么是 ...
分类:其他好文   时间:2020-07-30 16:55:10    阅读次数:78
AcWing 838. 堆排序
AcWing 838. 堆排序 #include <bits/stdc++.h> using namespace std; const int N=1e6+10; int h[N],num; void down(int u){ int t=u; if(u*2<=num&&h[u*2]<h[t]) t ...
分类:编程语言   时间:2020-07-30 14:25:51    阅读次数:68
二叉堆
1.什么是二叉堆? 二叉堆本质上是一种完全二叉树,它分为两个类型。 最大堆—最大堆的任何一个父节点的值,都大于或等于它左、右孩子节点的值。 最小堆—最小堆的任何一个父节点的值,都小于或等于它左、右孩子节点的值。 二叉堆的根节点叫做堆顶。 最大堆和最小堆的特点决定了:最大堆堆顶是整个堆中的最大元素;最 ...
分类:其他好文   时间:2020-07-30 14:04:44    阅读次数:66
Java实现经典七大经典排序算法
利用Java语言实现七大经典排序算法:冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序以及快速排序。 分类 类别 算法 插入排序类 插入排序、希尔排序 选择排序类 选择排序、堆排序 交换排序类 冒泡排序、快速排序 归并排序类 归并排序 复杂度 算法 平均情况 最好情况 最坏情况 辅助空间 稳 ...
分类:编程语言   时间:2020-07-30 01:51:43    阅读次数:111
【0004】数据结构中的栈、堆的实践
数据结构中的栈——先进后出,先进先出 数据结构中的堆——堆的本质是一个二叉树,包括二分法查找,朗格朗日差值查找,堆排序查找极值 结构体 void main006() { struct myStruct // 结构体的意义:将多种类型的数据整合在一起 { int a[10]; int i; }; st ...
分类:其他好文   时间:2020-07-26 00:04:36    阅读次数:96
2516条   上一页 1 2 3 4 5 6 ... 252 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!