排序算法 大部分算法都是从 无序区 扩展到 有序区 一、算法概述 1. 冒泡排序 O(N2),空间O(1) 每一轮从无序区冒泡出一个最大的数到有序区 2. 选择排序O(N2),空间O(1) 每一轮从无序区选择一个最大的数到有序区 3. 堆排序O(NlogN),空间O(1) 其实就是 选择排序的改进 ...
分类:
编程语言 时间:
2019-07-14 12:56:49
阅读次数:
124
优先队列是队列的高级版,最大的特点是可以内部实现排序 优先队列的定义 优先队列内部使用堆排序,从而实现队列内一直保持着某种顺序规律(比如递增,递减等) 在使用优先队列时,首先要引入头文件:#include <queue> 定义一个新类型的优先队列,通常使用: type为优先队列内所存元素的数据类型, ...
分类:
其他好文 时间:
2019-07-13 13:23:26
阅读次数:
126
堆排序介绍 堆排序是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。 可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。 什么是完全二叉树呢?还有满二叉树又是怎么的一种二叉树呢?还有完满二叉树? 完全二叉树: 除了最后一层之外的其他每一层都被完全填 ...
分类:
编程语言 时间:
2019-07-07 12:38:47
阅读次数:
109
常见排序算法的稳定性 编辑 常见排序算法的稳定性 堆排序、快速排序、希尔排序、直接选择排序是不稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个 ...
分类:
编程语言 时间:
2019-06-30 23:10:29
阅读次数:
222
1.堆排序基数排序适用于大小有界的东西,除了他之外,还有一种你可能遇到的其它专用排序算法:有界堆排序。如果你在处理非常大的数据集,你想要得到前 10 个或者前k个元素,其中k远小于n,它是很有用的。 例如,假设你正在监视一 个Web 服务,它每天处理十亿次事务。在每一天结束时,你要汇报最大的k个事务 ...
分类:
编程语言 时间:
2019-06-29 13:08:31
阅读次数:
126
堆是具有以下性质的完全二叉树,每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: 同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子: 该数组从逻辑上讲就是一个堆结构,我们用简单的公式来描述一下堆的 ...
分类:
编程语言 时间:
2019-06-25 17:02:51
阅读次数:
121
一、给定一个整型数组,包括正负值,找出取任意三个值的乘积最大 1、对整型排序(这里使用堆排序) 2、最大值只能是最小两个和最大一个或者最大三个值的乘积 3、测试 ...
分类:
编程语言 时间:
2019-06-24 00:45:35
阅读次数:
125
常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: 关于时间复杂度 平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。 线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序; O(n1+§)) ...
分类:
编程语言 时间:
2019-06-14 21:54:58
阅读次数:
155
什么是堆 堆是一种特殊的树,他满足一下两点要求 堆是一个完全二叉树 堆中每一个节点的值都必须大于等于(或小于等于)其子树中的值 最大堆 最大堆和最小堆是二查堆的两种形式,最大堆和最小堆很相似,所以本文只实现最大堆以及堆排序 最大堆:根节点的键值是所有结点键值中的最大者,且每个结点的值都比孩子结点大 ...
分类:
其他好文 时间:
2019-06-06 23:04:52
阅读次数:
217
本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90941941 1098 Insertion or Heap Sort (25 分) 1098 Insertion or Heap Sort (25 分) 1098 ...
分类:
编程语言 时间:
2019-06-05 22:07:39
阅读次数:
122