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 < size; i++)
/**代码未完, 请加载全部代码(NowJava.com).**/
本文系作者在时代Java发表,未经许可,不得转载。如有侵权,请联系nowjava@qq.com删除。