码迷,mamicode.com
首页 >  
搜索关键字:堆排序    ( 1851个结果
寻找最大的K个数
编程之美有一道考察多种排序的题目,题目如下: 有一个长度为N的无序数组,假定其中的每一个元素都各不相等,求其中最大的K个数。 作者对于此题目结合各种排序算法给出了五种解法思路。 解法一: 使用快速排序或堆排序对它们元素进行排序,整个排序的时间复杂度为O(N*log2{log}_2N),然后取出前K个,时间复杂度为O(K),总时间复杂度O(N*log2{log}_2N)+O(K)=O(N*l...
分类:其他好文   时间:2015-09-02 02:06:37    阅读次数:277
[排序算法]堆排序
快速排序每一趟比较用时O(n),要进行lgn次比较,才最终完成整个排序。所以快排的复杂度才为O(n*lgn)。而本节,我们要讲的是堆排序算法。据我所知,要真正彻底认识一个算法,最好是去查找此算法的原发明者的论文或相关文献。一、堆排序算法的基本特性时间复杂度:O(nlgn) //等同于归并排序最坏:O...
分类:编程语言   时间:2015-09-01 13:58:07    阅读次数:194
堆排序
一、概念堆排序是利用堆这种数据结构的性质设计的一种排序方式。堆是一个近似完全二叉树的结构,并满足性质:子节点的键值或则索引值总是小于等于(或则大于等于)父节点的。是不稳定排序。二、原理1.首先将待排序的数组进行堆化,构建成堆结构2.将堆首和堆尾进行交换3.将堆大小..
分类:编程语言   时间:2015-09-01 00:04:12    阅读次数:265
最小的K个数
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。用堆排序来做。 1 class Solution { 2 public: 3 vector GetLeastNumbers_Solution(vector input, ...
分类:其他好文   时间:2015-08-31 21:28:54    阅读次数:156
2016阿里巴巴java笔试题
题目: 一个整形数组里除了一个数字出现3次以外,其他数字都出现2次.请写程序找出这个出现3次的数字. 要求使用辅助空间O1,时间复杂度Onlogn. 1.使用堆排序.(堆排序的时间复杂度为Onlogn) 因为堆排序每次取到的都是最大(或是最小)的数字,三个相同的数字肯定是紧挨着被取出的. 所以在原先的堆排序算法上,加2个标记记录即可. 代码: // 使用堆排序,每次取...
分类:编程语言   时间:2015-08-31 13:35:12    阅读次数:200
排序算法之选择排序
选择排序也是比较简单的一种排序方法,这是内部排序的一种,实现的思路非常简单。 内部排序:指表的规模足够小,能够全部放在内存中进行排序的方法。(插入排序、快速排序、堆排序、归并排序、基数排序等)。 外部排序:指被排序的数据信息规模太大,不能全部放入内存时,文件必须分段装入内存,直到整个文件被排号序为止。...
分类:编程语言   时间:2015-08-30 06:38:48    阅读次数:169
算法:堆排序
# 堆排序的Python实现# coding:utf-8import randomimport timet = time.time()# 堆排序, 按照从小到大排序,所以建立大根堆# 列表的第一个元素没有使用def ShiftDown(a, i): if not a: retur...
分类:编程语言   时间:2015-08-30 00:46:04    阅读次数:339
排序总结
冒泡排序:O(N^2)。输入对结果没有影响。 插入排序:最差O(N^2),最优O(N),平均O(N^2)。输入有影响,例如已排好序,则为O(N)。 选择排序:最差,最优,平均都是O(N^2)。输入对结果没有影响。 希尔排序:最差为o(Nlg^2N)。缩小增量排序。关键是如何选取这个增量序列。(一般,但不够好的选择是 k/2)。 堆排序:最差,最优,平均都是O(NlgN)。堆排序是所有下界排...
分类:编程语言   时间:2015-08-29 21:45:53    阅读次数:192
Kth Largest Element in an Array
该题最直观的解决思路是先对数组进行排序,然后返回第k个元素即可,但是该方法的时间复杂度为 O(nlog(n)), 较高。比较高校的思路有两种:一种是堆排序的思路,一种是快拍的思路。         一、堆排序的思路。该思路设置容量为 k 的大顶堆,将剩余的元素每一个和堆顶元素进行比较,若比堆顶元素大则该元素必然不会是第 k 大的元素,直接处理下一个元素;若比...
分类:其他好文   时间:2015-08-29 17:04:59    阅读次数:126
必须知道的八大种排序算法【java实现】(三) 归并排序算法、堆排序算法详解
归并排序、堆排序详解(原理、例子、实现)
分类:编程语言   时间:2015-08-28 16:55:26    阅读次数:179
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!