排序:堆排序

最大堆排序的核心思想是建立一個(gè)最大堆,將數(shù)組的元素依次通過最大堆函數(shù)來調(diào)整.(開始位置從最后一個(gè)父節(jié)點(diǎn)開始)
然后將堆頂元素和元素末端元素進(jìn)行交換,這樣就可以將最大的元素放在數(shù)組的最后了.
代碼

package Sort;

/**
 * Created by Hammy on 2018/3/1.
 */
public class HeapSort
{
    private HeapSort(){};

    public static void sort(int[] array){
        int n=array.length;
        for(int i=n/2-1;i>=0;i--){
            adjust(array,i,n);
        }
        for(int i=n-1;i>0;i--){
            Util.swap(array,0,i);
            adjust(array,0,i);
        }
    }

    private static void adjust(int[] array,int i,int n){
        int temp=array[i];
        int j;
        for(j=i*2+1;j<n;j=j*2+1){
            if(j+1<n&&array[j+1]>array[j])
                j=j+1;

            if(temp>array[j])
                break;
            array[i]=array[j];
            i=j;
        }
        array[i]=temp;
    }


}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容