博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《算法导论》笔记---第6章 堆排序
阅读量:5098 次
发布时间:2019-06-13

本文共 2276 字,大约阅读时间需要 7 分钟。

/** *  * @author gyb * 《算法导论(第二版)》--第六章 堆排序 *  * maxHeapify(int[] a,i) *     将指定结点i的子树成为最大堆 * 书中伪代码: * MAX-HEAPIFY(A, i)   *     l ← LEFT(i)   *     r ← RIGHT(i)   *     if l ≤ heap-size[A] and A[l] > A[i]   *         then largest ← l   *         else largest ← i   *     if r ≤ heap-size[A] and A[r] > A[largest]   *         then largest ← r   *     if largest ≠ i   *         then exchange A[i] ↔ A[largest] 10  *             MAX-HEAPIFY(A, largest)  * 时间复杂度 *     因为    :T (n) ≤ T(2n/3) + Θ(1)  *     所以    :T (n) = O(lgn)  *  * buildMaxHeap(int[] a) *     自底向上地用MAX-HEAPIFY将一个数组A[1..n](此处n=length[A])变成一个最大堆 * 书中伪代码: * BUILD-MAX-HEAP(A)  *     heap-size[A] ← length[A]  *     for i ← length[A]/a downto 1    (此处length[A]/2做向下取整,符号没打出来...)  *         do MAX-HEAPIFY(A, i)  * 时间复杂度 *     因为    :O(n)次调用O(lgn)  *     所以    :T(n) = O(nlgn) *     但是更加紧确值为: O(n) *     具体原因看书。 *  */public class HeapTest {    //    private static int[] a = new int[] { 16,4,10,14,7,9,3,2,8,1 }; //    private static int[] a = new int[] { 4,1,3,2,16,9,10,14,8,7 };     private static int[] a = new int[] { 5,3,17,10,84,19,6,22,9};         private static int heapSize = a.length;         public static void maxHeapify(int[] a, int i){        int l = i*2;        int r = l+1;        int largest;                if(l <= heapSize && a[l-1] > a[i-1]){            largest = l;                    }else{            largest = i;        }                        if(r <= heapSize && a[r-1] > a[largest-1]){            largest = r;        }                    if(i != largest){            int temp = a[i-1];             a[i-1] = a[largest-1];             a[largest-1] = temp;             maxHeapify(a,largest);        }    }    public static void buildMaxHeap(int[] a){        for(int i = a.length / 2; i > 0; i--)            maxHeapify(a, i);    }        public static void output(){        StringBuffer sb = new StringBuffer();        for (int i : a) {            sb.append(i);            sb.append(" ");        }        System.out.println(sb.toString());    }    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        maxHeapify(a,4);//        buildMaxHeap(a);        output();    }}

 

转载于:https://www.cnblogs.com/GYoungBean/p/3589866.html

你可能感兴趣的文章
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
在centos上开关tomcat
查看>>
android dialog使用自定义布局 设置窗体大小位置
查看>>
ionic2+ 基础
查看>>