⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 heapsort.java

📁 java实现的各种排序算法:插入排序、起泡排序、希尔排序等。
💻 JAVA
字号:
package org.rut.util.algorithm.support; 


/** 
* @author treeroot 
* @since 2006-2-2 
* @version 1.0 
*/ 
public class HeapSort implements SortUtil.Sort{ 

   /* (non-Javadoc) 
    * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[]) 
    */ 
   public void sort(int[] data) { 
       MaxHeap h=new MaxHeap(); 
       h.init(data); 
       for(int i=0;i<data.length;i++) 
           h.remove(); 
       System.arraycopy(h.queue,1,data,0,data.length); 
   } 

    private static class MaxHeap{         
        
       void init(int[] data){ 
           this.queue=new int[data.length+1]; 
           for(int i=0;i<data.length;i++){ 
               queue[++size]=data[i]; 
               fixUp(size); 
           } 
       } 
        
       private int size=0; 

       private int[] queue; 
                
       public int get() { 
           return queue[1]; 
       } 

       public void remove() { 
           SortUtil.swap(queue,1,size--); 
           fixDown(1); 
       } 
       //fixdown 
       private void fixDown(int k) { 
           int j; 
           while ((j = k << 1) <= size) { 
               if (j < size && queue[j]<queue[j+1]) 
                   j++; 
               if (queue[k]>queue[j]) //不用交换 
                   break; 
               SortUtil.swap(queue,j,k); 
               k = j; 
           } 
       } 
       private void fixUp(int k) { 
           while (k > 1) { 
               int j = k >> 1; 
               if (queue[j]>queue[k]) 
                   break; 
               SortUtil.swap(queue,j,k); 
               k = j; 
           } 
       } 

   } 

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -