排序:堆排序

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

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


}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容