不清楚堆概念的可以看这篇文章:堆排序之-大顶堆
用Java实现的小顶堆代码:
public class littleHeap {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {3, 1, 6, 2, 9, 4, 5};
heapSort(arr);
for (int i : arr) {
System.out.println(i);
}
}
public static void heapSort(int[] array) {
//初始建堆
for(int i=array.length/2-1; i>=0; i--) {
adjustHeap(array, i, array.length); //构建小顶堆
}
//堆排序
for(int i=array.length-1; i>0; i--) {
int temp = array[0];
array[0] = array[i];
array[i] = temp;
adjustHeap(array, 0, i);
}
}
public static void adjustHeap(int[] array, int i, int length) {
int temp; //存放待调整的父节点
int child;
for(temp = array[i]; i*2 <= length-1; i = child) {
child = i*2;
if(child != (length-1) && array[child] > array[child+1]) //这一行代码和大顶堆有区别
chi
Java实现小顶堆及堆排序

这篇博客主要介绍如何用Java实现小顶堆,并在堆排序中应用小顶堆。作者建议对堆概念不熟悉的读者先阅读关于大顶堆的文章以加深理解。
最低0.47元/天 解锁文章
1456

被折叠的 条评论
为什么被折叠?



