1: public static <T extends Comparable<? super T>> 2: void heapSort(T[] array, int n) 3: { 4: // Create first heap 5: for (int rootIndex = n / 2 - 1; rootIndex >= 0; rootIndex--) 6: reheap(array, rootIndex, n - 1); 7: 8: swap(array, 0, n - 1); 9: 10: for (int lastIndex = n - 2; lastIndex > 0; lastIndex--) 11: { 12: reheap(array, 0, lastIndex); 13: swap(array, 0, lastIndex); 14: } // end for 15: } // end heapSort 16: // Version 4.0