基数排序 按照各个数字位数进行排序,分为LSD(最低位优先)和MSD(最高位优先)两种。复杂度为$O(d(n+k))$,其中$d$为最大位数,$n$为排序数量,$k$为基数的种数。 cpp include include include using namespace std; int getdg( ...
分类:
编程语言 时间:
2019-08-28 13:23:29
阅读次数:
81
稳定性 如果一个排序算法能够保留数组中 重复元素的相对位置 则可以被称为是 稳定 的 稳定的排序算法:插入排序、归并排序 不稳定的排序算法:选择排序、希尔排序、快速排序和堆排序 一般只有在稳定性是必要的情况下,稳定的排序算法才有优势。 各种排序算法的性能特点 | 算法 | 是否稳定 | 是否为原地排 ...
分类:
编程语言 时间:
2019-08-25 20:18:42
阅读次数:
109
快速排序是一种分治的排序算法。 它的工作原理是将一个数组分成两部分, 通过切分实现某一部分总小于另一数组,然后分别独立排序。 切分 1. 一般策略是先随意地选取 a[lo] 作为切分元素,即那个会被排定的元素,然后我们 2. 从数组的左端开始向右扫描直到找到一个大于等于它的元素, 3. 再从数组的右 ...
分类:
编程语言 时间:
2019-08-25 20:17:47
阅读次数:
144
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: 关于时间复杂度: 平方阶 ...
分类:
编程语言 时间:
2019-08-21 11:20:44
阅读次数:
80
堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 根据根结点是否是最大值还是最小值和子结点的键值是否小于还是大于它的父结点可分为两种堆,如下: 1.大顶堆:每个结点的键 ...
分类:
编程语言 时间:
2019-08-18 23:39:47
阅读次数:
109
# 堆排序 def max_heap(heap,heapsize,i): # 构造最大堆(内部构建) left=2*i+1 right=2*i+2 larger=i if leftheap[larger]: larger=left if rightheap[larger]: larger=right... ...
分类:
编程语言 时间:
2019-08-18 21:27:15
阅读次数:
94
1、java gc 2、java class的加载过程 3、java hashmap、 为什么用红黑树、红黑树邻接点为啥是8 。 4、拜占庭问题 5、一致性哈希 6、如何控制负载均衡。 7、http码 302 403 。 8、https 加密过程。 9、操作系统虚存实现原理,交换,覆盖区别。 10、 ...
分类:
其他好文 时间:
2019-08-07 22:45:04
阅读次数:
144
稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。 不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。 冒泡 选择 选择排序的思想是将序列分为有序和无序两个部分,不断从无序序列中选择最小的增加到有序序列中,这样,序列就从小到大排列整齐。 插入排序 插入排序原理是将当前元素与前面的元素比 ...
分类:
编程语言 时间:
2019-07-27 15:41:20
阅读次数:
127
在顺序表中: 顺序查找法:最坏情况下比较n次 查找最大项:最坏情况下比较n-1次 快速排序: 最坏情况下比较n(n-1)/2次 冒泡排序: 最坏情况下比较n(n-1)/2次 堆排序: 最坏情况下比较nlog2n ...
分类:
其他好文 时间:
2019-07-26 19:40:57
阅读次数:
118
把内容过程中比较重要的一些内容片段做个备份,如下的资料是关于Java排序算法 - 堆排序的内容。 import java.util.Arrays; public class HeapSort { int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62, ...
分类:
编程语言 时间:
2019-07-23 13:42:02
阅读次数:
97