#include#include#include#define leftChild(i) (2*(i)+1)//交换void swap(int *a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}//堆下溯void...
分类:
编程语言 时间:
2015-07-30 11:11:08
阅读次数:
143
堆的定义如下:
n个元素的序列{k0,k1,...,ki,…,k(n-1)}当且仅当满足下关系时,称之为堆。
" ki=k2i,ki>=k2i+1.(i=1,2,…,[n/2])"
若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,
则完全二叉树中每一个节点的值的都大于或等于任意一个字节的值(如果有的话),称之为大顶堆。
则完全二叉树...
分类:
编程语言 时间:
2015-07-30 09:32:27
阅读次数:
152
package sort;import java.util.Scanner;public class HeapSort { public static int arr[]; static{ System.out.println("Please enter the array...
分类:
编程语言 时间:
2015-07-28 22:30:17
阅读次数:
108
堆排序算法分析 什么是堆 ? ? ? ?我们这里讨论的堆是一种数据结构,而不是垃圾收集存储机制。(二叉)堆一个数组,它可以被看成一个近似的完全二叉树,即一棵树上的每一个结点对应数组中的某一个元素,除了最...
分类:
编程语言 时间:
2015-07-28 21:24:24
阅读次数:
143
Kth Largest Element in an ArrayTotal Accepted:13165Total Submissions:48240My SubmissionsQuestionSolutionFind thekth largest element in an unsorted arr...
分类:
编程语言 时间:
2015-07-28 17:45:12
阅读次数:
126
堆其实是一个完全二叉树堆分为大顶堆和小顶堆(index从0开始哦)大顶堆:key[i]>=key[2i+1]&&key[i]>=key[2i+2],大堆顶的关键字肯定是所有关键字中最大的小顶堆:key[i]<=key[2i+1]&&key[i]<=key[2i+2],小顶堆的堆顶的关键字是所有关键字...
分类:
编程语言 时间:
2015-07-28 12:52:22
阅读次数:
118
http://www.cnblogs.com/dolphin0520/archive/2011/10/06/2199741.html 堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:...
分类:
编程语言 时间:
2015-07-27 12:59:07
阅读次数:
130
LeetCode 之 Merge Sorted Array,本文给出详细算法思想与源码实现。...
分类:
编程语言 时间:
2015-07-27 11:11:56
阅读次数:
114
希尔排序
package ShellSort;import Utils.SortUtils;public class Demo { public static void shellSort(int[] a){ int temp,j;
int increment = a.length; do{
increment = incr...
分类:
编程语言 时间:
2015-07-26 22:44:00
阅读次数:
360
继上一篇实现基于堆的优先队列后,这次将利用上一次完成的基于堆的能够重复删除最大元素操作的优先队列来实现一种经典而优雅的排序算法,称之为堆排序。
堆排序可分为两个阶段:
1.构建堆:在堆的构建过程中,我们将原始数组重新组织安排进一个堆中;
2.下沉排序:从堆中按递减顺序取出所有元素并得到排序结果
具体的思想在下面的代码中有较为详细的注释:
/**
*
* @author seabea...
分类:
编程语言 时间:
2015-07-26 17:29:37
阅读次数:
142