1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| public class HeapSort { public static void main(String[] args) { int[] array = new int[] {3, 2, 1, 5, 6, 4}; new HeapSort().heapSort(array); } private void heapSort(int[] array) { int heapSize = array.length; for (int i = heapSize / 2 - 1; i >= 0; i--) { maxHeapify(array, i, heapSize); } } private void maxHeapify(int[] array, int i, int heapSize) { int left = 2 * i + 1; int right = 2 * i + 2; int largest = left; if (left < heapSize && array[left] > array[largest]) { largest = left; } if (right < heapSize && array[right] > array[largest]) { largest = right; } if (largest != i) { swap(array, i, largest); maxHeapify(array, largest, heapSize); } } private void swap(int[] array, int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } }
|