前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法练习(21) - 大顶堆

算法练习(21) - 大顶堆

作者头像
惊羽-布壳儿
发布2022-06-15 16:11:37
1250
发布2022-06-15 16:11:37
举报
文章被收录于专栏:惊羽-布壳儿惊羽-布壳儿

0. questtion

Build the sequence of integers using the maximum heap sort method

1. background knowledge

2 resolution

2.1 the principle

Use recursion to make each node conform to the characteristics of the heap

2.2 the code

代码语言:javascript
复制
public class BuildHeapTest{

    @Test
    public void buildHeap_test() {
        int[]  arr = {1,2,3,4,7,8,9,10,14,16};
        buildHeap(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    private void buildHeap(int[] arr) {
        for (int i = arr.length; i >= 0; i--) {
            maxHeap(arr,i);
        }
    }

    private void maxHeap(int[] arr, int i) {
        int leftI = 2*(i+1) - 1;
        int rightI = 2*(i+1);
        // 没有子节点
        if(arr.length -1 < leftI && arr.length -1 < rightI){
            return;
        }
        // 只有左子节点
        if(arr.length -1 >= leftI && arr.length -1 < rightI){
            // 调整arr[i] 与 arr[leftI] 的位置
            if(arr[leftI] >= arr[i]){
                int temp = arr[leftI];
                arr[leftI] = arr[i];
                arr[i] = temp;
                maxHeap(arr,leftI);
            }
        }
        // 左右子节点都有
        else{
            // 调整arr[i] 与 arr[leftI] 的位置
            if(arr[leftI] >= arr[i] && arr[leftI] >= arr[rightI]){
                int temp = arr[leftI];
                arr[leftI] = arr[i];
                arr[i] = temp;
                maxHeap(arr,leftI);
            }
            // 调整arr[i] 与 arr[rightI] 的位置
            if(arr[rightI] >= arr[i] && arr[rightI] >= arr[leftI]){
                int temp = arr[rightI];
                arr[rightI] = arr[i];
                arr[i] = temp;
                maxHeap(arr,rightI);
            }
        }

    }
}

3 Complexity analysis

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. questtion
  • 1. background knowledge
  • 2 resolution
    • 2.1 the principle
    • 2.2 the code
    • 3 Complexity analysis
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档