码迷,mamicode.com
首页 >  
搜索关键字:堆排    ( 1969个结果
Atitit.现实生活中最好使用的排序方法-----ati排序法总结
Atitit.现实生活中最好使用的排序方法-----ati排序法总结   1. 现在的问题 1 2. 排序的类别::插入排序//交换排序//选择排序(每次最小/大排在相应的位置  )//归并排序//基数排序 1 3. 选择排序法  (垃圾...不好使用) 2 4. 堆排序-(雅十垃圾...不好用) 2 5. 希尔排序法 (雅十垃圾...不好用) 3 6. 冒泡排序法 (雅十垃圾......
分类:其他好文   时间:2014-08-07 00:53:17    阅读次数:253
算法题:求数组中最小的k个数
题目:输入n个整数,找出其中最小的k个数。 《剑指offer》给出了两种实现算法: 算法1:采用Partition加递归法,该算法可以说是快速排序和二分查找的有机结合。算法的时间复杂度为O(n),缺点在于在修改Partition的过程中会修改原数组的值。 算法2:采用top-k算法。如果要找最小的K个数,我们才用一个含有K个值的大顶堆;如果要找最大的K个数,我们采用小顶堆。该算法的时间复杂度为O(nlogK),是一种比较好的算法,启发于堆排序。...
分类:其他好文   时间:2014-08-06 23:04:12    阅读次数:333
java实现堆排序
package com.peter.app.hello.heapsort;/** * heap sort * @author Peter.Yu * */public class HeapSort { public static int COUNT = 0; /** * build heap * @param a * @param size */ public static void buildHe...
分类:编程语言   时间:2014-08-06 19:27:52    阅读次数:269
数据结构-各类排序算法总结[续]
各类排序算法总结三.交换类排序[接上]2.快速排序 快速排序是通过比较关键码、交换记录,以某个记录为界(该记录称为支点),将待排序列分成两部分。其中,一部分所有记录的关键码大于等于支点记录的关键码,另一部分所有记录的关键码小于支点记录的关键码。我们将待排序列按关键码以支点记录分成两部分的过程,称为一次划分。对各部分不断划分,直到整个序列按关键码有序. 如果每次划分对一个元素定位后,该元素的左侧子序...
分类:其他好文   时间:2014-08-05 22:41:20    阅读次数:388
算法导论 第6章 堆排序
堆数据结构实际上是一种数组对象,是以数组的形式存储的,但是它可以被视为一颗完全二叉树,因此又叫二叉堆。堆分为以下两种类型: 大顶堆:父结点的值不小于其子结点的值,堆顶元素最大 小顶堆:父结点的值不大于其子结点的值,堆顶元素最小 堆排序的时间复杂度跟合并排序一样,都是O(nlgn),但是合并排序不是原地排序(原地排序:在排序过程中,只有常数个元素是保存在数组以外的空间),合并排序的多有元素都被...
分类:其他好文   时间:2014-08-05 22:34:10    阅读次数:232
数据结构精要------直接选择和堆排序算法
数据结构精要------直接选择和堆排序算法...
分类:其他好文   时间:2014-08-04 21:35:38    阅读次数:245
排序算法总结(C语言版)
排序算法总结(C语言版)1. 插入排序1.1 直接插入排序1.2 Shell排序2. 交换排序2.1 冒泡排序2.2 快速排序3. 选择排序3.1 直接选择排序3.2 堆排序4. 归并排序4.1 二路归并排序4.2 自然合并排序5. 分布排序5.1 基数排序1.插入排序1.1 直接插入排序...
分类:编程语言   时间:2014-08-01 23:04:42    阅读次数:349
算法笔记之堆排序
一、对堆排序的相关了解 1、堆排序的运行时间是 O(nlogn) ; 2、定义: 堆heap是一棵具有以下属性的二叉树—— (1)它是一棵完全二叉树; (2)每个结点大于或等于它的任意一个孩子。   备注:完全二叉树的定义——除了最后一层没填满以及最后一层的叶子都是偏左放置的,其他层都是满的二叉树!               3、二叉堆有两种:最大堆和最小堆。在堆排序中我...
分类:其他好文   时间:2014-08-01 00:11:00    阅读次数:269
堆排序
第一次实现堆排序,花了近两个小时。 主要还是堆调整,原理网上很多,直接给出运行代码和结果: 代码: #include using namespace std; void adjustHeap(int number[],int k,int length){ int t=number[k]; int i; for(; k*2+1 < length; k=i){ i=k*2...
分类:其他好文   时间:2014-08-01 00:10:20    阅读次数:285
数据结构之堆排序
堆排序,是数据结构中重要的排序方法,可以很快帮你找到最大值。在实际应用中,如最大优先级队列是大顶推的应用,可以很快找到优先级最高的队列。1.堆概念堆的定义如下,n个元素的序列{k1,k2,...kn},当且仅当满足如下关系:ki>=k2i 或者 ki=k2i+1 ...
分类:其他好文   时间:2014-07-31 02:36:55    阅读次数:337
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!