堆排序(java实现)】的更多相关文章

import java.util.Arrays; /* * 思路: * 1.方法adjustDown:对于一个数组a[],针对第i个数进行向下(直到len-1)调整,使得该位置成为大顶堆 * 2.方法bulidMaxHeap:从len/2-1位置到0位置,循环调用adjustDown,使其成为大顶堆 * 3.方法heapSort:建立大顶堆,让第一个与最后一个调换位置,然后将第一个adjustDown一下.循环. */ public class HeapSort { //建立大顶堆 public…
<pre name="code" class="java">package heapSort; /** * 大根堆 * @author root * */ public class HeapSort { static int[] data = {0,9,4,6,2,5}; static int[] data1 = {0,2,4,5,3,1,7,6}; public static void main(String[] args) { // TODO Aut…
堆排序: 一棵完全二叉树,如果父节点的值大于等于左右节点的值,则称此完全二叉树为小根堆(小顶堆):如果父节点的值小于等于左右节点的值,则次完全二叉树为大根堆(大顶堆). 堆排序是建立在大顶堆或小顶堆的基础上的,通过不断的交换堆顶元素和堆尾元素,来对数组排序.基于大顶堆的堆排序,数组排序结果是升序的.基于小顶堆的堆排序,数组排序结果是降序的. 流程: (1)建立堆 (2)交换堆顶与堆底元素 (3)调整堆 代码: public class DuiPaiXu { //堆排序 public static…
堆排序:利用大根堆 数组全部入堆,再出堆从后向前插入回数组中,数组就从小到大有序了. public class MaxHeap<T extends Comparable<? super T>> { private T[] data; private int size; private int capacity; public MaxHeap(int capacity) { this.data = (T[]) new Comparable[capacity + 1]; size =…
1.堆排序基数排序适用于大小有界的东西,除了他之外,还有一种你可能遇到的其它专用排序算法:有界堆排序.如果你在处理非常大的数据集,你想要得到前 10 个或者前k个元素,其中k远小于n,它是很有用的. 例如,假设你正在监视一 个Web 服务,它每天处理十亿次事务.在每一天结束时,你要汇报最大的k个事务(或最慢的,或者其它最 xx 的).一个选项是存储所有事务,在一天结束时对它们进行排序,然后选择最大的k个.需要的时间与nlogn成正比,这非常慢,因为我们可能无法将十亿次交易记录在单个程序的内存中.…
一.堆排序 堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法.堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点. 二.堆 什么是堆      堆是一个树形结构,其实堆的底层是一棵完全二叉树.而完全二叉树是一层一层按照进入的顺序排成的.按照这个特性,我们可以用数组来按照完全二叉树实现堆. 大顶堆与小顶堆     大顶堆原理:根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大顶堆.大顶堆要求根节点的关键字既大于…
package practice; import edu.princeton.cs.algs4.StdRandom; public class TestMain { public static void main(String[] args) { int[] a = new int[20]; for (int i = 0; i < a.length; i++) { int temp = (int)(StdRandom.random()*100); a[i] = temp; } HeapSrot.…
堆排序算法 java 实现 白话经典算法系列之七 堆与堆排序 Java排序算法(三):堆排序 算法概念 堆排序(HeapSort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素.堆排序是不稳定的排序方法,辅助空间为O(1), 最坏时间复杂度为O(nlog2n) ,堆排序的堆序的平均性能较接近于最坏性能. 算法思想 建立最小堆: 取出堆顶元素,顺序放到待排序数组中:将堆底元素放到堆顶,并重新调整堆: 重复步骤 2 ,直至堆中所有元素全部取完: 参考的…
2018年学习总结博客总目录:第一周 第二周 第三周 第四周 第五周 第六周 第七周 第八周 教材学习内容总结 第十二章 优先队列与堆 1.堆(heap)是具有两个附加属性的一棵二叉树: (1)它是一棵完全二叉树,即该树是平衡的,且底层所有叶子都位于树的左边. (2)最小堆:对每一结点,它小于或等于其左孩子和右孩子. 最大堆:对每一结点,它大于或等于其左孩子和右孩子. 接下来所讨论内容是关于最小堆的. 2.堆的接口定义及其方法实现: (1)addElement:将给定元素添加到该堆中:    …
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /** * 需求:计算网页访问量前三名 * 用户:喜欢视频 直播 * 帮助企业做经营和决策 * * 看数据 */ object UrlCount { def main(args: Array[String]): Unit = { //1.加载数据 val conf:SparkConf = new Spa…