排序系列之堆排序
2012-11-02 23:46
309 查看
堆积排序(Heapsort)是指利用堆积树(堆)这种资料结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。
public class HeapSort { public final static void heapSort(int a[]){ new MiniPriorityQueue(a); } private static class MiniPriorityQueue { private final int queue[]; private int size; public MiniPriorityQueue(int a[]) { this.size = a.length; this.queue = a; heapify(); while(this.isNotEmpty()){ this.pop(); } } private void heapify() { for (int i = (this.size >>> 1) - 1; i >= 0; i--) siftDown(i, this.queue[i]); } private void siftDown(int index, int value) { int i = this.size >>> 1; while (index < i) { int j = (index << 1) + 1; int temp = this.queue[j]; int k = j + 1; if ((k < this.size) && (this.queue[j] > this.queue[k])) { temp = this.queue[(j = k)]; } if (temp > value) break; this.queue[index] = temp; index = j; } this.queue[index] = value; } public void pop(){ int result = this.queue[0]; int value = this.queue[--this.size]; siftDown(0, value); this.queue[this.size]=result; } public boolean isNotEmpty(){ return this.size != 0; } } public static void main(String[] args) { int[] a= new int[]{5,3,7,8,2,6,1,4}; heapSort(a); System.out.println(Arrays.toString(a)); } }
相关文章推荐
- 排序系列- 堆排序
- 排序系列--堆排序
- 数据结构与算法系列之一:八大排序之堆排序
- 排序系列之堆排序
- 排序总结系列七:堆排序
- 排序系列- 堆排序
- 数据结构和算法系列6 七大排序之直接选择排序和堆排序
- 数据结构与算法从零开始系列:冒泡排序、选择排序、插入排序、希尔排序、堆排序、快速排序、归并排序、基数排序
- 排序系列之——快速排序、堆排序、归并排序
- 排序系列算法——堆排序
- 排序算法系列-堆排序-快速排序-基数排序-简单选择排序-归并排序
- 白话讲排序系列(六) 堆排序(绝对让你明白堆排序!)
- 基本排序系列之最简单讲述堆排序
- 排序系列之(2)堆排序及C语言实现
- 数据结构--排序系列(插入排序,希尔排序,堆排序)Java代码实现
- 数据结构和算法系列6 七大排序之直接选择排序和堆排序
- 排序系列--堆排序
- 算法熟记-排序系列-堆排序
- 排序算法之堆排序
- Lucene系列:(9)搜索结果排序