码迷,mamicode.com
首页 >  
搜索关键字:堆排    ( 1969个结果
找出N个数据中的最大的K个数据---堆排序
从N个数据中找出最大的K个数据,而且这里有一个限制:内存里存不下所有的N个数据,但是可以存下K个数据。这就让我们打消了用排序的方法来解的念头。在这里我们使用堆排序来完成。因为我们只能有K个数据那么大的空间,所以我们建一个K大的堆,将N的前K个数据插入到堆中,然后调..
分类:编程语言   时间:2016-04-29 01:50:34    阅读次数:499
排序算法--概述和参考
1概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并..
分类:编程语言   时间:2016-04-27 22:53:33    阅读次数:472
【数据结构】将一组数据升序排序(利用堆排序)
堆排序相对冒泡排序、选择排序效率很高,不再是O(n^2).假若将一个序列升序排序好,那么我们来考虑最大堆还是最小堆来排序。假若是最小堆的话,堆的顶端必定是堆中的最小值,这样貌似可以。但是,如果是它的(一边或)子树左子树的节点数据值大于(一边或)右子树的节点数据值..
分类:编程语言   时间:2016-04-27 14:24:44    阅读次数:252
【数据结构】用模版实现大小堆、实现优先级队列,以及堆排序
一、用模版实现大小堆如果不用模版的话,写大小堆,就需要分别实现两次,但是应用模版的话问题就简单多了,我们只需要实现两个仿函数,Greater和Less就行了,仿函数就是用类实现一个()的重载就实现了仿函数。这个看下代码就能理解了。再设计参数的时候,需要把模版设计成模版的..
分类:编程语言   时间:2016-04-27 14:22:08    阅读次数:158
【Algorithm】堆排,C++实现
对一个数组中的元素按照顺序构建二叉树,就形成了一个(二叉)堆。(二叉树是虚拟的,并不是真的建立二叉树) 表示堆的数组A有两个重要属性:A.heapSize,表示堆里面有多少元素,数组里有多少元素在堆里 A.length,表示数组长度 例如数组A= {1,2,3,4,5,6,7,8,9,10},此时A ...
分类:编程语言   时间:2016-04-27 12:37:16    阅读次数:149
【数据结构】找出N个数据中最大的前k个数据(利用堆排序)
我们举例,假若从10000万个数里选出前100个最大的数据。首先我们先分析:既然要选出前100个最大的数据,我们就建立一个大小为100的堆(建堆时就按找最大堆的规则建立,即每一个根节点都大于它的子女节点),然后再将后面的剩余数据若符合要求就插入堆中,不符合就直接丢弃该数..
分类:编程语言   时间:2016-04-27 07:04:04    阅读次数:307
排序算法(二)堆排序
一、选择排序的问题如果有n个数排序,简单排序需要选取一个极值(最大值或者最小值)需要比较n-1次。但是,每一轮比较并没有把以前比较过的结果保存下来,导致下一轮比较的时候会有比较过的数据继续比较大小,这其实影响了效率,做了很多无用功。堆排序是对简单选择排序的改进..
分类:编程语言   时间:2016-04-27 07:02:17    阅读次数:398
数据结构--二叉堆与堆排序
二叉堆的概念 二叉堆,BinaryHeap,是二叉树中的常见的一种结构。通常以最大堆和最小堆的形式呈现。最大堆指的是父节点大于等于孩子节点的value值,也就是说对于最大堆而言,根元素是二叉堆最大的元素。最小堆的概念是与最大堆的概念是相似的。...
分类:编程语言   时间:2016-04-26 21:19:07    阅读次数:215
常见的排序方法
常见经典排序算法 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序 一.希尔(Shell)排序法(又称宿小增量排序,是1959年由D.L.Shell提出来的) /* Shell 排序法 */ #include <stdio.h ...
分类:编程语言   时间:2016-04-26 12:34:35    阅读次数:258
面试中的排序算法总结
前言   查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。面试官对于这...
分类:编程语言   时间:2016-04-25 15:09:45    阅读次数:225
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!