当前位置: 首页 > news >正文

排序-堆排序

给你一个整数数组 nums,请你将该数组升序排列。

输入:nums = [5,2,3,1]
输出:[1,2,3,5]
输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]

思路直接看我录制的视频吧 算法-堆排序_哔哩哔哩_bilibili

实现代码如下所示:

class Solution {public int[] sortArray(int[] nums) {if (nums == null || nums.length == 1) {return nums;}headSort(nums);return nums;}private void headSort(int[] nums) {for (int i = (nums.length - 1) / 2; i >=0; i--) {adjustHead(nums, i, nums.length);}for (int i = nums.length - 1; i >0; i--) {int temp = nums[i];nums[i] = nums[0];nums[0] = temp;adjustHead(nums, 0, i);}}private void adjustHead(int[] nums, int parent, int length) {int temp = nums[parent];int maxChildIndex = parent * 2 + 1;while (maxChildIndex < length) {int rightChild = maxChildIndex + 1;if (rightChild < length && nums[rightChild] > nums[maxChildIndex]) {maxChildIndex++;}if (maxChildIndex < length && nums[maxChildIndex] < temp) {break;}nums[parent] = nums[maxChildIndex];parent = maxChildIndex;maxChildIndex = maxChildIndex * 2 + 1;}nums[parent] = temp;}
}

http://www.lryc.cn/news/114217.html

相关文章:

  • 挑战Open AI!!!马斯克宣布成立xAI.
  • HTTP协议学习笔记1
  • 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解
  • 【学习日志】2023.Aug.6,支持向量机的实现
  • LeetCode_动态规划_中等_1749.任意子数组和的绝对值的最大值
  • 无涯教程-Perl - 环境配置
  • QT显示加载动画
  • 原型模式(C++)
  • web浏览器打开本地exe应用
  • 微信小程序如何配置并使用less?
  • 【Spring】反射动态修改Bean实例的私有属性值
  • MySQL DDL 数据定义
  • Ventoy 设置VTOY_MAX_SEARCH_LEVEL = 0只扫描U盘根目录 不扫码子目录
  • vue3父子同信的双向数据实现
  • Shiro是什么?为什么要用Shiro?
  • Vue3+Vite+Pinia+Naive后台管理系统搭建之九:layout 动态路由布局
  • 从零开始学Python(Ⅰ)基本变量与数据类型
  • SQL ASNI where from group order 顺序 where和having,SQL底层执行原理
  • Mac M2 Ventura(13.3) 新机 安装Cocoapods
  • Unity 引擎做残影效果——2、屏幕后处理方式
  • 考研算法38天:反序输出 【字符串的翻转】
  • “深入解析JVM:探秘Java虚拟机的工作原理“
  • [Flask]SSTI1
  • Object Map 的相互转换
  • VS+Qt环境下解决中文乱码问题
  • 互联网摸鱼日报(2023-08-08)
  • NTT DATA利用相干伊辛机模拟基因组组装和疾病治疗的潜力
  • 哈希表语法(转载自用)
  • 打破界限,图文档与物料清单完美互联
  • 【电机绘图】:插补算法(一)—直线插补—逐点比较法