码迷,mamicode.com
首页 >  
搜索关键字:堆排    ( 1969个结果
堆排序
之前写过一篇博客是教你几种基本的常见排序算法 ,就说到会有后续的文章出来,继续写写排序问题,参加一些公司的电话面试,还总是会问到写关于排序的问题,大多是关于堆排序,快排序或者海量数据排序,或者从很到的数字序列中找到些中间位置的数字,或者是前K个最小的数字等相关问题,今天正好有空写了写堆排序的代码,自己存储一下,也拿出来共享给大家! 堆排序的算法思路,网上一搜索一堆,本科的课本里面也有较为详细的讲解...
分类:编程语言   时间:2015-03-21 23:00:13    阅读次数:307
排序和顺序统计学(1)
也有好几天没记录算法学习情况了,这两天看了《算法导论》的第二部分,排序和顺序统计学,记录一下,也顺便增强记忆1.堆排序 就是最大堆和最小堆,用一维数组存储,数据结构是完全二叉树。主要过程分为构建最大/最小堆,插入操作,弹出最大值,取最大/最小值,改变堆中的权值。 构建堆就是从第一个非叶子节点...
分类:编程语言   时间:2015-03-21 22:50:14    阅读次数:215
堆排序
堆排序分为建堆,调整堆两个步骤。 关键是分清数组大小和堆大小,因为数组的最后几个元素已经是排好序,相当于从堆中移除了。 ``` #include using namespace std; void HeapAdjust(int *a, int i, int size) { i...
分类:编程语言   时间:2015-03-21 11:24:34    阅读次数:218
堆排序
堆排序利用了大根堆的两个特点: 1.      堆顶元素是最大元素; 2.      后一次堆调整可以在前一次的基础上进行; 堆排序利用了数组的一个特点: 1.      快速定位指定索引的元素; 使用了以上的特点使得对无序数组进行排序变得简单而高效。...
分类:编程语言   时间:2015-03-21 09:52:38    阅读次数:218
算法基础之希尔排序
希尔排序的实质就是分组插入排序, 是对直接插入排序的改进。 时间复杂度为O(nlongn), 跟快速排序, 堆排序的时间复杂度相同, 是一种较为快速的排序方式。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的 元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排...
分类:编程语言   时间:2015-03-20 23:40:01    阅读次数:192
白话经典算法系列之七 堆与堆排序
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:编程语言   时间:2015-03-20 14:20:38    阅读次数:155
【数据结构】——排序算法——1.1、直接插入排序
插入算法很多,无论是在内功修炼,各种笔试面试都是相当有用的。接下来,将陆续将各种排序算法进行练习: 主要分为以下几个部分(其他后面学习补充): 一、插入类排序:1、直接插入排序;2、折半插入排序;3、希尔shell排序; 二、交换类排序:1、冒泡排序 ;2、快速排序; 三、选择类排序:1、简单选择; 2、堆排序; 本人多使用Java——开始吧! 首先推荐维基百科《排序算法》词条...
分类:编程语言   时间:2015-03-20 12:55:22    阅读次数:187
堆数据结构+堆排序+最大优先队列的堆的实现
对于堆排序,首先要先知道什么是堆数据结构,堆数据结构就是一个完全二叉树,但是它有自己的性质. 例如最大堆的性质为:A[PARENT[i]]>=A[i];即每一个结点的值大于等于其左右孩子的值,小于等于其父节点的值。我们在这里只讨论最大堆的情况。我们知道一颗完全二叉树对应一个最大堆的形式,我们要做的就是将二叉树转化为最大堆,这就是所谓的最大堆的维护,我们定义函数MaxheapFY(A,i)来进行操作...
分类:编程语言   时间:2015-03-20 11:04:21    阅读次数:177
面试——8大排序算法图文讲解
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文将依次介绍上述八大排序算法。算法一:插...
分类:编程语言   时间:2015-03-17 23:13:00    阅读次数:215
白话经典算法系列之七 堆与堆排序
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:编程语言   时间:2015-03-17 20:03:18    阅读次数:152
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!