算法之 堆的简单介绍 一、堆的分类 大根堆:一棵完全二叉树,满足任一节点都比其孩子节点大小根堆:一棵完全二叉树,满足任一节点都比其孩子节点小 二、堆的向下调整性质 前提:节点的左右子树都是堆,但是自身不是堆 三、堆排序 内置模块 优先队列:一些元素的集合,POP操作每次执行都会从优先队列中弹出最大( ...
分类:
编程语言 时间:
2018-12-27 03:26:41
阅读次数:
209
常用排序算法 目录 一、冒泡排序 二、选择排序 三、插入排序 四、快速排序 五、堆排序 六、归并排序 七、基数排序 八、希尔排序 九、桶排序 十、总结 一、冒泡排序 1、思路:首先,列表每两个相邻的数比较大小,如果前边的比后边的大,那么这两个数就互换位置。就像是冒泡一样 2、代码关键点: 趟数:n- ...
分类:
编程语言 时间:
2018-12-27 03:17:25
阅读次数:
241
一、准备知识 1.堆 堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二 ...
分类:
编程语言 时间:
2018-12-24 23:30:33
阅读次数:
248
百度百科:https://baike.baidu.com/item/%E5%A0%86%E6%8E%92%E5%BA%8F/2840151?fr=aladdin ...
分类:
编程语言 时间:
2018-12-21 20:19:20
阅读次数:
178
1.排序问题 现有一个含有N个数字的数组S,如何通过程序把这个数组变成有序的数组? 例如: 排序前:S:5,3,7,5,9,4,1,100,50 排序后:S:1,3,4,5,5,7,9,50,100 2.二叉堆(binary heaps) 进行堆排序前,需要先把数组排成二叉堆,故这里先介绍二叉堆。 ...
分类:
编程语言 时间:
2018-12-20 14:18:30
阅读次数:
158
各种基本算法实现小结(五)—— 排序算法 (均已测试通过) * 选择排序 |____简单选择排序 |____堆排序 |____归并排序* 交换排序 |____冒泡排序 |____快速排序* 插入排序 |____直接插入排序 |____折半排序 |____希尔排序* 分配排序 |____箱排序 |__ ...
分类:
编程语言 时间:
2018-12-19 15:55:24
阅读次数:
224
下面再介绍STL中与堆相关的4个函数——建立堆make_heap(),在堆中添加数据push_heap(),在堆中删除数据pop_heap()和堆排序sort_heap(): 头文件 #include <algorithm> 下面的_First与_Last为可以随机访问的迭代器(指针),_Comp为 ...
分类:
其他好文 时间:
2018-12-15 11:55:39
阅读次数:
228
(一)时间复杂度为O(N²),空间复杂度为O(1)的排序 冒泡排序 选择排序 插入排序 (二)时间复杂度为O(NlogN)的排序 归并排序,空间复杂度为O(N) 快速排序,空间复杂度为O(logN)~O(N) 堆排序,空间复杂度为O(1) 经典堆排序实现使用了递归的方式(函数栈),空间复杂度为O(l ...
分类:
编程语言 时间:
2018-12-12 15:01:34
阅读次数:
233
脑袋不够用,所以记录下来 python 版本 构建 最大堆 class Utils(object): @staticmethod def buildMaxHeap(l=None,heap_size=None): if heap_size is None: heap_size = len(l) for ...
分类:
编程语言 时间:
2018-12-12 14:52:24
阅读次数:
261