public class HeapSort {
public static void heapSort(int[] array) {
if (null == array || array.length < 2) {
return;
}
int index;
for (int i = 0; i < array.length; i++) {
index = array.length - i - 1;
maxHeap(array, index);
if (index != 0) {
array[0] ^= array[index];
array[index] ^= array[0];
array[0] ^= array[index];
}
}
}
private static void maxHeap(int[] array, int lastIndex) {
int k;
int index = (lastIndex - 1) / 2;
for (int i = index; i > -1; i--) {
k = i;
while (2 * k <= lastIndex - 1) {
int biggerIndex = 2 * k + 1;
if (biggerIndex < lastIndex && array[biggerIndex] < array[biggerIndex + 1]) {
biggerIndex++;
}
if (array[k] < array[biggerIndex]) {
array[k] ^= array[biggerIndex];
array[biggerIndex] ^= array[k];
array[k] ^= array[biggerIndex];
k = biggerIndex;
} else {
break;
}
}
}
}
}
JAVA堆排序(HEAP-SORT)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 堆排序是一种树形选择排序,是对直接选择排序的有效改进。 基本思想: 堆顶元素(即第一个元素)必为最小项(小顶堆)或...
- 堆排序算法,基于选择排序的思想,利用堆结构的性质来完成对数据的排序。 前提准备: 什么是堆结构:堆数据结构是一种数...
- 1、为什么要使用堆? 首先我们可以理解一下堆和栈之间的区别,第一从空间的分配来看的话,堆是手动申请和释放空间,一般...
- 二叉堆 这个二叉堆和先进后出的那个堆不是一个。而且这个二叉堆从下标1开始存储元素。 这里的二叉堆是个数组,也可以看...