算法 最坏情况 平均情况/期望运行时间 插入排序 Θ(n^2) Θ(n^2) 归并排序 Θ(nlg(n)) Θ(nlg(n)) 堆排序 O(nlg(n)) 快速排序 Θ(n^2) Θ(n^2)(期望) 计数排序 Θ(k+n) Θ(k+n) 基数排序 Θ(d(k+n)) Θ(d(k+n)) 桶排序 Θ
分类:
编程语言 时间:
2016-02-23 20:40:34
阅读次数:
182
void adjust_element(vector<int>& data, int i) { if (2 * i + 1 >= data.size()) return ; int index = 2 * i + 1; int min = data[index]; if (2 * i + 2 < d
分类:
编程语言 时间:
2016-02-22 09:03:48
阅读次数:
208
在前面的文章中,我们介绍的都是基于比较的排序。对于比较排序,对含n个元素的序列进行排序,在最坏情况下都要用O(n logn)次比较(归并排序和堆排序是渐近最优的)。本文将继续介绍以线性时间运行的排序算法,他们使用的是非比较排序,因此下界O(n logn)对它们不适用。计数排序想象下面这种情况:一个班有k个人,需要排成一条纵队,地面上已经用粉笔按从小到大的顺序标明了1到k个号码,要求按身高从低到高排列...
分类:
编程语言 时间:
2016-02-20 13:24:39
阅读次数:
193
排序算法应该是大学毕业后用到频率较高的为数不多的几个算法之一,通常情况下根据原理不同分为几个不同的类别,对我个人来说,主要的类别: 1,随意写随意用无视效率的冒泡,插入,选择三种基本排序 2,最常用的效率相对前三种较好的快速排序,快排 3,神特么除了多年写作业刷题库没有遇到过实际应用场景的堆排、归并
分类:
编程语言 时间:
2016-02-17 19:06:31
阅读次数:
211
一、生成小根堆 1、随机生成一棵完全二叉树 2、调整结点56及其子树 3、调整结点77及其子树 4、调整结点45及其子树 5、调整结点18及其子树 6、调整结点29及其子树 (1)调整几点29及其左、右儿子 (2)调整结点29及其左、右儿子 二、堆排序 1、取出当前最小元素3 (1)掐尖 (2)将结
分类:
编程语言 时间:
2016-02-09 08:05:05
阅读次数:
187
比较排序:各元素的次序依赖于它们之间的比较{插入排序O(n**2) 归并排序O(nlgn) 堆排序O(nlgn)快速排序O(n**2)平均O(nlgn)} 本章主要介绍几个线性时间排序:(运算排序非比较排序)计数排序O(k+n)基数排序O() 第一节:用决策树分析比较排序的下界 决策树:倒数第二层满...
分类:
编程语言 时间:
2016-02-05 18:30:58
阅读次数:
229
堆排序是相对其他排序稍微麻烦的排序,是一种利用堆的性质进行的选择排序。堆其实是一棵完全二叉树,只要任何一个非叶节点的关键字不大于或者不小于其左右孩子节点,就可以形成堆。堆分为大顶堆和小顶堆。由上述性质可知大顶堆的堆顶的关键字是所有关键字中最大的,小顶堆的堆顶的关键字是所有关键字中最小的。堆排序同快速排序一样都是不稳定排序。示例代码上传至:https://github.com/chenyufeng1...
分类:
编程语言 时间:
2016-02-03 14:34:40
阅读次数:
215
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.o
分类:
编程语言 时间:
2016-02-03 12:44:53
阅读次数:
213
优先级队列及小顶堆排序实现/**@fileHeapSort.h*@copyrightpersonal*@brief优先级队列及堆排序*@versionV1.0.0*@authorfangyuan*@date2015/12/31*@note测试版本*/#include"iostream"usingnamespacestd;template<classT>classCPriQueue{private:intm_iIndex;intm_iMaxsize..
分类:
编程语言 时间:
2016-01-30 18:37:59
阅读次数:
199
C++ Primer 学习中。。。
简单记录下我的学习过程 (代码为主)
/*****************************************
STL-算法--Heap算法
堆排序算法 (heapsort)
make_heap() //把容器内的数据做堆排序
push_heap() //向堆内放入元素
...
分类:
编程语言 时间:
2016-01-30 02:58:58
阅读次数:
186