public void heapSort(int[] arry){ int len= arry.length -1 ; for(int i = (len-1)/2 ;i>=0 ;i--){ buildHeap(arry,i,len); } for(int i = len ;i >0 ;i--){ .... ...
分类:
编程语言 时间:
2018-10-04 10:13:36
阅读次数:
174
堆是完全二叉树 子树是不相交的 度 节点拥有子树的个数 满二叉树: 每个节点上都有子节点(除了叶子节点) 完全二叉树: 叶子结点在倒数第一层和第二层,最下层的叶子结点集中在树的左部 ,在右边的话,左子树不能为空 二叉搜索树: 左边子节点小于父节点,右边子节点大于父节点 堆: 也叫队列,在堆尾插入,在 ...
分类:
编程语言 时间:
2018-09-27 01:49:59
阅读次数:
162
一、堆 完全二叉树 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),是不稳定排序 堆排序中的堆有大顶堆、小顶堆两种。他们都是完全二叉树 将该堆按照排序放入列表 1. 大顶堆: 所有的父节点的值都比孩子节点大,叶子节点值最小。r ...
分类:
编程语言 时间:
2018-09-26 01:12:49
阅读次数:
245
排序方法 最坏时间复杂度 最好时间复杂度 平均时间复杂度直接插入 O(n2) O(n) O(n2)简单选择 O(n2) O(n2) O(n2)起泡排序 O(n2) O(n) O(n2)快速排序 O(n2) O(nlog2n) O(nlog2n)堆排序 O(nlog2n) O(nlog2n) O(nl ...
分类:
编程语言 时间:
2018-09-22 19:40:42
阅读次数:
182
1、什么是堆 (1) 堆是具有以下性质的完全二叉树(那么,什么是完全二叉树呢?完全二叉树是一种除了最后一层之外的其他每一层都被完全填充,并且所有结点都保持向左对齐的树):每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: 同时 ...
分类:
编程语言 时间:
2018-09-22 14:45:10
阅读次数:
151
import copy def heap_sort(hlist): def heap_adjust(parent): child = 2 * parent + 1 # left child while child heap[child]: child += 1 # right child ... ...
分类:
编程语言 时间:
2018-09-22 10:37:21
阅读次数:
180
大学有一门课程叫做数据结构,严蔚敏的课本,其中详细介绍了集中经典的排序算法,学习复习反复几次,但是直到现在仍然只记得名字了,所以想记录下来,随时复习直至牢记于心。经常面试的朋友知道,排序算法在面试中出现的频率很高,尤其是开发、算法等岗位,因为排序算法是算法的入门知识。排序算法的思想可以灵活应用到实际 ...
分类:
编程语言 时间:
2018-09-20 01:02:34
阅读次数:
163
# 二叉树的遍历# 对二叉树中的所有元素不重复的访问一遍# 广度优先遍历# 层序遍历# 从第一层开始,没一层从左至右遍历元素# 深度优先遍历# 假设树的根节点为D,左子树为L,右子树为R,且要求L一定在R之前,则有以下遍历方式:# 前序遍历:也叫先序遍历,也叫先根遍历,DLR# 中序遍历:也叫中根遍 ...
分类:
编程语言 时间:
2018-09-16 15:35:33
阅读次数:
200
【Java】 1. 容器 1)队列(queue): 若Blocking:阻塞put/take offer/peek poll 异常element/remove a. PriorityQueue:comparator 堆排序 b. Deque:双向队列 linkedList addFirst() c. ...
分类:
其他好文 时间:
2018-09-12 20:01:44
阅读次数:
135
主要是理解思路,思路有了代码则是水到渠成。 堆排序实际是数组排序,使用数组的下标构造成一个二叉树,想法很有意思。 加入有数组a,那可以把a[0]视为根节点,它的子节点为a[2*0+1],a[2*0+2],即对于任何一个节点a[i],则有子节点a[2*i+1]和a[2*i+2]。 1. 构建一个大顶堆 ...
分类:
编程语言 时间:
2018-09-12 19:55:06
阅读次数:
400