美文网首页
排序:堆排序

排序:堆排序

作者: Hammy | 来源:发表于2018-03-01 17:25 被阅读0次

    最大堆排序的核心思想是建立一个最大堆,将数组的元素依次通过最大堆函数来调整.(开始位置从最后一个父节点开始)
    然后将堆顶元素和元素末端元素进行交换,这样就可以将最大的元素放在数组的最后了.
    代码

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

    相关文章

      网友评论

          本文标题:排序:堆排序

          本文链接:https://www.haomeiwen.com/subject/sbhnxftx.html