堆排序

小顶堆

package 宝典;

/**
 * @ author:mian
 * @ DATA:2018/5/8 11:31
 */
public class 堆排序 {
    public static void adjustMinHeap(int[]a,int pos,int len){
        int temp;
        int child;
        for(temp=a[pos];2*pos+1<=len;pos=child){
            child = 2*pos+1;
            if(child<len&&a[child]>a[child+1]){
                child++;
            }
            if(a[child]<temp){
                a[pos]=a[child];
            }
            else
                break;
        }
        a[pos]=temp;
    }
    public static void MinHeapSort(int[] array){
        int i;
        int len = array.length;
        //建堆
        for(i=len/2-1;i>=0;i--){
            adjustMinHeap(array,i,len-1);

        }
        for(i=len-1;i>=0;i--){
            int tmp=array[0];
            array[0]=array[i];
            array[i]=tmp;
            adjustMinHeap(array,0,i-1);
        }
    }

    public static void main(String[] args) {
        int i=0;
        int a[] = {5,4,9,8,7,6,0,1,3,2};
        int len = a.length;
        MinHeapSort(a);
        for(i=0;i<len;i++){
            System.out.println(a[i]+"");
        }
    }
}

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

推荐阅读更多精彩内容

  • 堆是一棵满足一定性质的二叉树,具体的讲堆具有如下性质:父节点的键值总是不大于它的孩子节点的键值(小顶堆), 堆可以...
    9527Roy阅读 667评论 0 0
  • 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O...
    尼小摩阅读 11,834评论 3 11
  • 堆排序和快速排序一样也是一个O(n logn)的排序算法 但是二者是不一样的实现原理 [这是肯定的,不要pia我]...
    阿飞不理飞阅读 755评论 0 0
  • 我们有意调整了排序的顺序,最后讲这个堆排序。不是因为它很难,而是它涉及到了基本的数据结构知识。 堆,又名“优先队列...
    吃个小烧饼阅读 403评论 0 3
  • 昨天完成22个俯卧撑。今天23个。。今天看来要在医院做。。尴尬。 本来是来北京出差,结果父亲骑车摔了肩膀,锁骨骨折...
    ipirate阅读 141评论 0 0