码迷,mamicode.com
首页 >  
搜索关键字:堆排    ( 1969个结果
Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
本文就是介绍一些常见的排序算法。排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序、选择排序、冒泡排序、快速排序(重点)、堆排序、归并排序等等。看下图: 给定数组:int data[] = {9,2, ...
分类:编程语言   时间:2016-05-11 12:54:24    阅读次数:313
[大、小根堆应用总结一]堆排序的应用场景
前言 在整理算法题的时候发现,大根堆(小根堆)这种数据结构在各类算法中应用比较广泛,典型的堆排序,以及利用大小根堆这种数据结构来找出一个解决问题的算法最优解。因此,我打算单独将关于堆的应用独立总结出来,后面每遇到一种跟堆结构相关的应用都放到这个目录下。 堆的定义 n个关键字序列L[1…n]称为堆,当且仅当该序列满足: 1. L(i)<=L(2i)且L(i)<=L(2i+1)或...
分类:编程语言   时间:2016-05-10 12:55:56    阅读次数:670
100万个数中找出最大的前K个数
拿到这个题目我想到了很多方法,但是在我想到的方法中,要把在100万个数中找到前k个数,都不适用。最后通过我的不断研究,我想到了我认为最简单的方法,就是利用堆来做这道题目。下面我分析一下我用堆排序的思路:1.我先建一个大小为k的堆。2.把100万中前k个数放到这个堆中。3...
分类:其他好文   时间:2016-05-09 18:56:37    阅读次数:171
堆的应用(1000个数据中找最大的前K个元素,堆排序)
(1)从1000个数据中找到k个最大数据首先看到这个题时,可能会想到先将这1000个数据进行降序排序,即取出的前k个元素最大。时间复杂度为O(N^2),使得程序效率低。如何解决这个问题呢?我们的堆就派上用场喽!解题思路:可先创建一个数组topK[k],将100w中的前k个数据放入数组topK..
分类:编程语言   时间:2016-05-09 11:09:36    阅读次数:1382
堆排序
首先将数组中的元素生成大堆,依次将数组的第一个元素(大堆的根节点)与数组最后一个元素进行交换,在将数组的总个数依次减一,将数组重新生成大堆,依次,最终数组中的元素排列即为大堆的排序情况。voidCreate(intparent,inta[],intsize){ intchild=2*parent+1; while(child&..
分类:编程语言   时间:2016-05-08 20:02:34    阅读次数:171
常见排序算法(JS版)
常见排序算法(JS版)包括: 内置排序,冒泡排序,选择排序,插入排序,希尔排序,快速排序(递归 & 堆栈),归并排序,堆排序,以及分析每种排序算法的执行时间。 index.html main.js main.js 排序效果: ...
分类:编程语言   时间:2016-05-08 13:48:56    阅读次数:309
内部排序
内部排序 一、插入 1.直接插入 2.希尔排序 二、交换 1.冒泡 2.快速排序 三、选择 1.简单选择 2.堆排序 3.归并排序 四、基数排序 本人能力有限,代码中可能存在问题,欢迎大家指正。我通过一些数据的测试,都基本通过,希望对一些朋友有用,谢谢 一、 /******************* ...
分类:编程语言   时间:2016-05-08 13:20:32    阅读次数:172
堆排序
堆排序算法时间复杂度为 O(nlgn) 堆从结构上讲,应该是一棵完全二叉树。在堆排序中一个很重要的概念是,维持最大堆的特性。最大堆就是每个节点的值比它左右孩子节点都要大。 我们首先将非叶子节点 都维持最大堆的特性一次。就是说保证非叶子节点它的左右孩子都比它的值要小。build_max_heap函数实现 其中,一个很重要的函数是max_heapify,它的功能是控制单个节点,保证它的孩子节点小...
分类:编程语言   时间:2016-05-07 08:53:38    阅读次数:154
数据结构之排序
1、这篇文章中,涉及到的排序算法有:冒泡、选择、堆排序、快排。 2、算法原理概述 /// -------------- 冒泡排序 ---------------- /* 冒泡排序 算法原理: 1、比较相邻的两个元素,若第一个比第二个大,就交换他们两个 2、从第一个到结尾的最后一对,对每一对相邻元素做同样的操作。最后的元素应该是最大的数 3、除了最后一个,...
分类:编程语言   时间:2016-05-06 14:57:06    阅读次数:234
09-排序3 Insertion or Heap Sort
和前一题差不多,把归并排序换成了堆排序。要点还是每一次排序进行判断 开始犯了个错误 堆排序该用origin2 结果一直在排序origin ,误导了半天以为是逻辑错误。。。一直在检查逻辑 建立最大堆 排序并调整下滤 According to Wikipedia: Insertion sort iter ...
分类:编程语言   时间:2016-05-05 12:27:03    阅读次数:347
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!