排序算法 排序算法两阶段 第一阶段(比较排序) 插入排序 合并排序 堆排序 快速排序 第二阶段(非比较排序) 计数排序 基数排序 桶排序 第一阶段:比较排序 插入排序 插入排序的主要思想 : 将当前的元素放入前面合适的位置 插入排序的实现细节 : heap_sort小结: heap_sort中最重要 ...
分类:
编程语言 时间:
2018-10-06 20:40:56
阅读次数:
188
十种常见排序算法可以分为两大类:1. 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。2. 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类... ...
分类:
编程语言 时间:
2018-09-21 15:17:34
阅读次数:
193
std::set 中内部元素有序条件删除的理解 1. std::set中的元素是有序排列的 注意:Set集合中的元素通过iterator的引用,但是不能修改。 元素排序: (1)元素中实现比较operator < , (2)Set构造中,输入仿函数(实现元素比较排序) 基于上述的规则,因此:如果要更 ...
分类:
其他好文 时间:
2018-09-18 17:25:21
阅读次数:
497
01.计数排序、桶排序与基数排序 并不是所有的排序 都是基于比较的,计数排序和基数排序就不是。基于比较排序的排序方法,其复杂度无法突破$n\log{n}$ 的下限,但是 计数排序 桶排序 和基数排序是分布排序,他们是可以突破这个下限达到O(n)的的复杂度的 。 1. 计数排序 概念 计数排序是一种稳 ...
分类:
编程语言 时间:
2018-09-16 15:49:47
阅读次数:
184
所谓计数排序,就是建立在计数上的排序。 计数排序不以比较为基础,所以可以打破比较排序$O(nlogn)$的复杂度下界。 我们只要计算出比$i$小的数字有多少个,就可以知道$i$在数据里的排名。然后根据排名,我们就可以反造一波排好序的数据了。 我们用$rk[i]$记录第$i$个数据的排名,$sum[i ...
分类:
编程语言 时间:
2018-09-14 23:05:44
阅读次数:
171
算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此 ...
分类:
编程语言 时间:
2018-09-05 21:55:43
阅读次数:
215
常见经典排序算法常见经典排序非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。时间复杂度... ...
分类:
编程语言 时间:
2018-08-25 14:13:49
阅读次数:
118
目录 冒泡排序 鸡尾酒排序 选择排序 插入排序 二分插入排序 希尔排序 归并排序 堆排序 快速排序 鸡尾酒排序 二分插入排序 希尔排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2), ...
分类:
编程语言 时间:
2018-08-04 14:37:09
阅读次数:
197
一.comparable和Comparator的区别 1、Comparable和Comparator都是用来实现集合中元素的比较、排序的。 2、Comparable是在类内部定义的方法实现的排序,位于java.lang下。 3、Comparator是在类外部实现的排序,位于java.util下。 4 ...
分类:
编程语言 时间:
2018-08-01 14:05:47
阅读次数:
175
[TOC] 排序算法 排序算法之间的比较: 排序算法|最差时间分析| 平均时间复杂度| 稳定度| 空间复杂度 | | | | 冒泡排序| O(n^2) |O(n^2) | 稳定 |O(1) 选择排序| O(n^2) |O(n^2) |不稳定 |O(1) 插入排序| O(n^2) |O(n^2) |稳 ...
分类:
编程语言 时间:
2018-07-29 14:21:37
阅读次数:
179