1.堆排序基数排序适用于大小有界的东西,除了他之外,还有一种你可能遇到的其它专用排序算法:有界堆排序。如果你在处理非常大的数据集,你想要得到前 10 个或者前k个元素,其中k远小于n,它是很有用的。 例如,假设你正在监视一 个Web 服务,它每天处理十亿次事务。在每一天结束时,你要汇报最大的k个事务 ...
分类:
编程语言 时间:
2019-06-29 13:08:31
阅读次数:
126
三、堆排序(Heapsort) 优先队列可以用于O(N log N) 存储空间增加一倍 排序类别 排序方法 时间复杂度 时间复 杂度 空间复杂度 稳定性 复杂性 平均情况 最坏情况 最好情况 选择排序 堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定 较复杂 堆排 ...
分类:
编程语言 时间:
2019-03-25 10:31:01
阅读次数:
177
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
最近在面试的时候经常能碰到让手写代码的,其中这三种经典排序算法更是出现频繁,在这里用C++总结一下,也算是备忘。 快速排序(QuickSort) 快速排序最经典的就是挖坑法,在第一个数字(把该数字作为temp,即枢轴量pivot)处挖坑用来存放右侧第一个比temp值小的数,然后坑的位置就变成了右侧这 ...
分类:
编程语言 时间:
2018-10-12 13:59:20
阅读次数:
141
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
一、列表排序 排序就是将一组“无序”的记录序列调整为“有序”的记录序列。 列表排序:将无序列表变为有序列表。 输入:列表 输出:有序列表 两种基本的排序方式:升序和降序。 python内置的排序函数:sort()。 二、常见排序算法 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N* ...
分类:
编程语言 时间:
2018-09-13 01:15:52
阅读次数:
193
算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此 ...
分类:
编程语言 时间:
2018-09-05 21:55:43
阅读次数:
215
实验6 排序 实验6 排序 1 #include <iostream> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #define INFINITY INT_MAX 5 #define MAXSIZE 100 6 7 using namespace st ...
分类:
其他好文 时间:
2018-08-14 20:00:12
阅读次数:
182
构建堆的过程,O(N) 从下面的元素向下沉 堆排序,每次交换堆顶的元素和结尾的元素,调整堆,每次O(logN) 堆插入,push_heap每次将元素放在结尾,将结尾元素向上查找更大或更小的元素下沉,每次O(logN) 堆删除,pop_heap,删除堆顶元素,将堆顶元素放在结尾等待删除,将剩下的元素重 ...
分类:
其他好文 时间:
2018-08-06 19:49:12
阅读次数:
484
1 #include <stdio.h> 2 #include <malloc.h> 3 4 #define LeftChild(i) (2*(i)+1) 5 6 typedef int ElementType; 7 8 void SwapTwoNum(ElementType *Num_1,Elem ...
分类:
编程语言 时间:
2018-08-05 22:39:21
阅读次数:
228