1 package iYou.neugle.sort; 2 3 public class Heap_sort { 4 public static void HeapSort(double[] array) { 5 for (int i = (int) Math.floor(array.length / 2); i > 0; i--) { 6 HeapBuild(array, i, array.length); 7 } 8 9 for (int i = array.length - 1; i > 0; i--) { 10 double temp = array[0]; 11 array[0] = array[i]; 12 array[i] = temp; 13 14 HeapBuild(array, 0, i); 15 } 16 } 17 18 public static void HeapBuild(double[] array, int parent, int length) { 19 double temp = array[parent]; 20 int child = parent * 2 + 1; 21 while (child < length) { 22 if (child + 1 < length && array[child + 1] > array[child]) { 23 child++; 24 } 25 if (temp >= array[child]) { 26 break; 27 } 28 29 array[parent] = array[child]; 30 31 parent = child; 32 child = parent * 2 + 1; 33 } 34 array[parent] = temp; 35 } 36 }