堆排序--建堆
public class HeapSort{
public static void main(String[] args){
int[] arrays = {45, 23,56,78,90,80,65};
HeapSort h = new HeapSort();
h.buildHeap(arrays);
System.out.println(" ni hao a ".trim());
h.printArrays(arrays);
}
public void printArrays(int[] arrays){
for(int i=0; i<arrays.length; i++){
System.out.println(arrays[i] + " , " );
}
}
public void maxHeap(int[] arrays, int index){
int size = arrays.length;
int left = 0;
int right = 0;
int largest = index;
if(size >= 2){
left = 2 * index + 1;
right = 2 * index + 2;
if(left < size && arrays[left] > arrays[index]){
largest = left;
}
if(right < size && arrays[right] > arrays[largest]){
largest = right;
}
if(largest != index){
swap(arrays, largest, index);
// System.out.println("************" + largest + " *********" + index);
maxHeap(arrays, largest);
}
}
}
public void buildHeap(int[] arrays){
int size = arrays.length;
for(int i=size/2-1; i>=0; i--){
maxHeap(arrays, i);
}
}
private void swap(int[] arrays, int i, int j){
int temp;
temp = arrays[i];
arrays[i] = arrays[j];
arrays[j] = temp;
}
}