堆排序的java实现
有时利用特殊的数据结构可以极大的提高计算机的运算效率,堆排序利用了完全二叉树的便捷性,提高了排序的效率,时间复杂度为O(nlogn) 递归实现: public class HeapSort { public static void main ( String [ ] args ) { int [ ] arr = new int [ ] { 30 , 42 , 7 , 66 , 3 , 51 , 67 , 21 , 19 , 45 } ; sort ( arr ) ; } public static void sort ( int [ ] arr ) { buildHeap ( arr ) ; // 构建大顶堆 for ( int a : arr ) { System . out . print ( a + " " ) ; } // 打印 67 66 51 42 45 30 7 21 19 3 System . out . print ( "\n" ) ; int temp ; for ( int i = arr . length - 1 ; i > 0 ; i -- ) { // 依次交换堆顶(最大值)到最后一个结点 temp = arr [ 0 ] ; arr [ 0 ] = arr [ i ] ; arr [ i ] = temp ; rebuildHeap ( arr , 0