2017-07-24 17:04:23 writer:pprp 参考书目:张新华的《算法竞赛宝典》 小根堆排序,使用数组模拟堆,时间复杂度为O(nlogn) 调整部分的程序比较难理解,有的地方还是不太清楚。 代码如下: ...
分类:
编程语言 时间:
2017-07-24 19:05:04
阅读次数:
455
记得群主在青葱的大学岁月,经常从图书馆贪婪地借书。我不喜欢在冬天或夏天去图书馆蹭空调自习,觉得太舒服了(事实是不喜欢扎堆排队),而喜欢在破旧又有年代感的自习室里蒸着桑拿或瑟瑟发抖学着习。没错,就是这么自虐。说到图书馆,暑假是可以借十本书的。我经常为这十本书斟酌一下午。记得一次我拿了《居里夫人自传》, ...
分类:
其他好文 时间:
2017-07-24 00:06:00
阅读次数:
457
堆排序可归纳为两个操作: 1)建堆:根据初始数组去构造初始堆(构建一个完全二叉树,保证所有的父结点都比它的孩子结点数值大)。 2)调整堆:每次交换第一个和最后一个元素,输出最后一个元素(最大值),然后把剩下元素重新调整为大根堆。 当输出完最后一个元素后,这个数组已经是按照从小到大的顺序排列了。调整堆 ...
分类:
编程语言 时间:
2017-07-21 21:52:57
阅读次数:
199
类别排序方法时间复杂度空间复杂度稳定性插入排序插入排序O(N^2)O(1)稳定希尔排序O(N^3/2)O(1)不稳定选择排序选择排序O(N^2)O(1)不稳定堆排序O(N)O(1)不稳定交换排序冒泡排序O(N^2)O(1)稳定快速排序O(NlogN)O(logN)不稳定归并排序归并排序O(NlogN)O(N)稳定
分类:
编程语言 时间:
2017-07-20 10:20:13
阅读次数:
149
本文转自http://blog.csdn.net/cnyali/article/details/43447771 //堆排序 #include<stdio.h> #include<stdlib.h> int a[100010],len=0; void insert(int x){ a[++len]= ...
分类:
编程语言 时间:
2017-07-19 21:52:10
阅读次数:
213
一、概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目 ...
分类:
编程语言 时间:
2017-07-19 01:10:45
阅读次数:
149
下面是和快速排序,堆排序,相媲美的归并排序,时间复杂度都为O(nLog2n)。 对于归并排序中出现的递归算法,调用的函数顺序以及如何返回,大家可以访问这个网址来详细理解 http://blog.csdn.net/cinderella_hou/article/details/51763681 个人看了 ...
分类:
编程语言 时间:
2017-07-16 19:20:34
阅读次数:
238
//最小堆的特性说明:即任何一非叶节点的值不大于其左右孩子节点的值。 //堆排序最适合取TOPN的数据 #include "myheap.h" int myswap(int *src, int *desc) { int tmp = 0; tmp = *src; *src = *desc; *desc ...
分类:
编程语言 时间:
2017-07-16 12:24:42
阅读次数:
219
之前的博客介绍介绍了数组的两种排序算法:插入排序和归并排序(採用递归),见链接http://blog.csdn.net/u013165521/article/details/46845033。 本篇博客,介绍还有一种排序算法:堆排序。(内容參照算法导论) 一、堆的概念 所谓堆,它是一个数组,也能够被 ...
分类:
编程语言 时间:
2017-07-12 21:20:59
阅读次数:
289
转自:http://www.cnblogs.com/yangecnu/p/Introduce-Priority-Queue-And-Heap-Sort.html 在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象。最简单的一个例子就是,在手 ...
分类:
编程语言 时间:
2017-07-11 23:03:12
阅读次数:
167