提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
实现堆排序
class Heap_Sort { // Conquer public static void Heapify(int[] array, int root, int size) /** from * n o w j a v a . c o m **/ { int left = 2 * root + 1, largest; int right = left + 1, temp; if(left < size && array[left] > array[root]) largest = left; else largest = root; /* n o w j a v a . c o m */ if(right < size && array[right] > array[largest]) largest = right; if(largest != root) { temp = array[root]; array[root] = array[largest]; array[largest] = temp; Heapify(array, largest, size); } } // Divide array into halves public static void Build_Heap(int[] array, int size) { for(int i = (size - 1) / 2; i >= 0; i--) Heapify(array, i, size); } public static void HeapSort(int array[], int size) { Build_Heap(array, size); int temp, i; for(i = size - 1; i > 0; i--) { temp = array[0]; array[0] = array[i]; array[i] = temp; Heapify(array, 0, i); } } // function ro print array public static void Print_Array(int[] array, int size) { for(int i = 0; i <