堆排序--建堆

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;
   }
    
 
 }

posted on 2013-04-20 15:39  尖刀舞者  阅读(125)  评论(0编辑  收藏  举报