构建堆的过程,O(N) 从下面的元素向下沉 堆排序,每次交换堆顶的元素和结尾的元素,调整堆,每次O(logN) 堆插入,push_heap每次将元素放在结尾,将结尾元素向上查找更大或更小的元素下沉,每次O(logN) 堆删除,pop_heap,删除堆顶元素,将堆顶元素放在结尾等待删除,将剩下的元素重 ...
分类:
其他好文 时间:
2018-08-06 19:49:12
阅读次数:
484
堆排序是一种不稳定排序,其中构建初始堆经推导复杂度为O(n),在交换并重建堆的过程中,需交换n-1次,而重建堆的过程中,根据完全二叉树的性质,[log2(n-1),log2(n-2)...1]逐步递减,近似为nlogn 详情 http://www.cnblogs.com/chengxiao/p/61 ...
分类:
编程语言 时间:
2018-07-21 17:08:20
阅读次数:
186
要进行堆排序,首先需要将无序序列进行建堆,这里是建的大堆 网上的有些帖子,按照他们给出的堆排序代码和序列,确实能够输出对的排序,但要是输入自己的无序序列或者直接在他们的序列后面添加几个乱序,就出错了。 就自己动手实现了一下,代码如下,给出了每一步的解释和说明: 输出结果为: ...
分类:
编程语言 时间:
2018-07-08 14:35:28
阅读次数:
140
STL中的heap是用数组来进行模拟的,heap 本身的定义就是一颗完全的二叉树(注意和满二叉树的区别)。 heap分为大根堆和小根堆。 堆的主要操作由构建堆,调整堆,这两个。 其中有一个heap算法就是在此基础之上的。 构建好一颗大根堆,然后 将根顶元素和最后一个元素呼唤,将堆的大小减1,同时再次 ...
分类:
其他好文 时间:
2018-07-01 11:55:34
阅读次数:
178
static关键字的特点 a:随着类的加载而加载 b:优先于对象存在 c:被类的所有对象共享 d:可以通过类名调用 static的注意事项 a:在静态方法中是没有this关键字的 如何理解呢? 静态是随着类的加载而加载,this是随着对象的创建而存在。 静态比对象先存在。 b:静态方法只能访问静态的 ...
分类:
其他好文 时间:
2018-06-29 14:07:04
阅读次数:
132
package testpackage; import java.util.Arrays; public class Heap { //建立大顶堆 public static void buildMaxHeap(int[] a) { for(int i=(a.length/2)-1;i>=0;i--... ...
分类:
编程语言 时间:
2018-05-03 22:04:38
阅读次数:
179
文件压缩与解压缩> 近期这段时间一直在学习树的这样的数据结构,也接触到了Huffman树以及了解了什仫是Huffman编码,而我们经常使用的zip压缩也是利用的Huffman编码的特性,那仫是不是能够自己实现一个文件压缩呢?当然能够了.在文件压缩中我实现了Huffman树和建堆Heap的代码,zip ...
分类:
其他好文 时间:
2018-04-06 12:26:55
阅读次数:
182
1、概述 在Java中,内存分为两种,一种是栈内存,另一种就是堆内存。 2、堆内存 1 2 堆内存是是Java内存中的一种,它的作用是用于存储Java中的对象和数组,当我们new一个对象或者创建一个数组的时候,就会在堆内存中开辟一段空间给它,用于存放。 1 2 第一点:堆其实可以类似的看做是管道,或 ...
分类:
编程语言 时间:
2018-03-09 16:15:42
阅读次数:
181
本文详细阐述了大小堆的创建,堆的插入和删除;为了加深记忆还用堆实现了优先级队列问题,topk问题,堆排序问题(包含原理,思路,代码实现,以及测试用例)。本文在windows平台下vs2008上采用C语言实现。 ...
分类:
其他好文 时间:
2018-02-26 11:29:20
阅读次数:
176
1.冒泡排序 2.选择排序 3.插入排序 4.快速排序 5.堆排序 6.并归排序 7.希尔排序 8.内置堆模块排序 9.计数排序 ...
分类:
编程语言 时间:
2018-02-02 22:03:23
阅读次数:
207