堆排序(Java语言)

 视频讲解地址:【手把手带你写十大排序】7.堆排序(Java语言)_哔哩哔哩_bilibili

代码:

public class HeapSort {public void swap(int[] array, int index1, int index2) {array[index1] = array[index1] ^ array[index2];array[index2] = array[index1] ^ array[index2];array[index1] = array[index1] ^ array[index2];}public void downAdjust(int[] array, int index, int arrayLength) {if (index > (arrayLength - 2) >> 1) {return;} else if ((index * 2) + 2 >= arrayLength) {if (array[(index * 2) + 1] > array[index]) {swap(array, (index * 2) + 1, index);}} else {if (array[(index * 2) + 2] > array[index] && array[(index * 2) + 2] >= array[(index * 2) + 1]) {swap(array, (index * 2) + 2, index);downAdjust(array, (index * 2) + 2, arrayLength);} else if (array[(index * 2) + 1] > array[index] && array[(index * 2) + 1] > array[(index * 2) + 2]) {swap(array, (index * 2) + 1, index);downAdjust(array, (index * 2) + 1, arrayLength);}}}public void initHeap(int[] array, int arrayLength) {boolean hasTwochild = (arrayLength % 2) == 1 ? true : false;for (int i = (arrayLength - 2) >> 1; i >= 0; i--) {if (hasTwochild) {if (array[(i * 2) + 2] > array[i] && array[(i * 2) + 2] >= array[(i * 2) + 1]) {swap(array, (i * 2) + 2, i);downAdjust(array, (i * 2) + 2, arrayLength);} else if (array[(i * 2) + 1] > array[i] && array[(i * 2) + 1] > array[(i * 2) + 2]) {swap(array, (i * 2) + 1, i);downAdjust(array, (i * 2) + 1, arrayLength);}} else {if (array[(i * 2) + 1] > array[i]) {swap(array, (i * 2) + 1, i);}hasTwochild = true;}}}public void sortFunction(int[] array) {int arrayLength = array.length;for (int i = array.length - 1; i > 0; i--) {initHeap(array, arrayLength);swap(array, i, 0);arrayLength--;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/615162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | Matlab基于SMA+WOA+SFO-LSSVM多输入单输出回归预测

回归预测 | Matlab基于SMAWOASFO-LSSVM多输入单输出回归预测 目录 回归预测 | Matlab基于SMAWOASFO-LSSVM多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 SMAWOASFO-LSSVM回归预测 基于黏菌算法鲸鱼算法向日葵算法优化LSSVM回归预测 其中包含三种改进…

RSIC-V“一芯”学习笔记(一)——概述

考研的文章和资料之后想写的时候再写怕趴 文章目录 一、阶段设计二、环境、开发语言和工具三、最重要的两个观念四、处理器芯片设计五、处理器芯片设计包含很多软件问题六、处理器芯片的评价指标七、复杂系统的构建和维护八、专业世界观九,提问的艺术(提问模板)十、…

pandas创建一个新的dataframe对象

import pandas as pd df pd.DataFrame() print(df)

ddos攻击会让服务器受到什么影响?-速盾网络(sudun)

DDoS攻击是一种网络攻击手段,它通过利用大量的请求或恶意流量超过服务器的处理能力,从而导致服务器无法正常工作或服务质量显著下降。 首先,DDoS攻击会对服务器的带宽造成极大的压力。攻击者会利用大量的机器或网络资源发起攻击,…

Ubuntu下使用Virtual Box中显示没有可用的USB设备

Ubuntu中使用Virtual Box,但是使用到USB时只有USB1.1可以使用,并且提示没有可以使用的USB设备,解决方法如下 下载并安装Vitrual Box提供的功能扩展包 分别点击帮助->关于,查看当前使用的版本进入到Virtual Box官网下载链接根…

MATLAB中untrace函数用法

目录 语法 说明 untrace函数的功能是在仿真调试会话中移除跟踪点。 语法 untrace blk 说明 untrace blk 从当前仿真调试会话的跟踪点列表中移除块 blk 的跟踪点。每当在仿真调试会话中执行块时,软件会显示与跟踪点对应的块的信息。 当以编程方式启动仿真调试会…

vue前端开发自学练习,Props数据传递-类型校验,默认值的设置!

vue前端开发自学练习,Props数据传递-类型校验,默认值的设置! 实际上,vue开发框架的时候,充分考虑到了前端开发人员可能会遇到的各种各样的情况,比如大家经常遇到的,数据类型的校验,再比如,默认…

Spring之整合Mybatis底层源码

文章目录 一、整体核心思路1 . 简介2. 整合思路 二、源码分析1. 环境准备2. 源码分析 一、整体核心思路 1 . 简介 有很多框架需要与Spring进行整合,而整合的核心思路就是把其他框架所产生的对象放到Spring容器中,让其成为一个bean。比如Mybatis&#x…

在Colab上测试Mamba

我们在前面的文章介绍了研究人员推出了一种挑战Transformer的新架构Mamba 他们的研究表明,Mamba是一种状态空间模型(SSM),在不同的模式(如语言、音频和时间序列)中表现出卓越的性能。为了说明这一点,研究人员使用Mamba-3B模型进行了语言建模…

Oladance、南卡、Cleer开放式耳机怎么样?全方位测评大PK!

​开放式耳机作为新兴的音频设备领域中备受欢迎的选择,但市场上琳琅满目的产品汇集了质量千差万别的耳机,其中存在着一些粗制滥造的产品。身为一位音频设备测评博主,我经常收到有关哪个品牌的开放式耳机质量好的疑问。面对市面上众多选择&…

MFC结合GDI+

MFC结合GDI 创建一个空的MFC界面,在确定按钮函数里进行画图: 1、包含头文件与库 在stdafx.h中加入以下三行代码: #include "gdiplus.h" using namespace Gdiplus; #pragma comment(lib, "gdiplus.lib")2、安装GDI 在…

常州ipad签约 电子签约 战略签约 启动签约

ipad电子签约、签约上墙、多人签约、电子签约、签约仪式、签约软件、签军令状、签字上屏、屏幕签字等,并且本公司ipad签约可以实现 甲方对应N个乙方签约系统对多人:是指只有一个甲方,多个第三方。甲方只要签名一次就可以自动帖加指定的位置 …

基于Flask的高并发部署方案

在AI部署方案中,Flask是最常用的方案!本文列举几种最常用基于Flask的部署方案。 Flask方案 简介 Flask 是一个轻量级的 Python Web 框架,它非常适合构建小型到中型的应用程序。下面是对 Flask 的详细解释和简单示例: Flask 的特点: 轻量级:相比于 Django,Flask 更轻…

uni-app做A-Z排序通讯录、索引列表

上图是效果图,三个问题 访问电话通讯录,拿数据拿到用户的联系人数组对象,之后根据A-Z排序根据字母索引快速搜索 首先说数据怎么拿 - 社区有指导https://ask.dcloud.net.cn/question/64117 uniapp 调取通讯录 // #ifdef APP-PLUSplus.contac…

安谋科技“周易”NPU与飞桨完成II级兼容性测试,助力实现多样化AI部署

近日,安谋科技(中国)有限公司(以下简称“安谋科技”)“周易”NPU系列IP与飞桨已完成II级兼容性测试,测试结果显示,双方兼容性表现良好,整体运行稳定。这是安谋科技加入“硬件生态共创…

个人装机记录

配置单: CPU:13900K 主板:z790-a 吹雪 D5 显卡:华硕 tuf 4090 固态:三星990 pro 2TB 2 内存:金士顿 fury d5 6000频 32G2 散热:龙神三代360 电源:tuf 1200W 机箱:tuf 502…

【Node.js学习 day3——http模块】

创建HTTP服务端 //1.导入http模块 const http require(http);//2.创建服务对象 const server http.createServer((request, response) > {response.end(Hello HTTP Server);//设置响应体 });//3.监听端口,启动服务 server.listen(9000,()>{console.log(服务…

IMS中如何区分initial INVITE和re-INVITE?

这里就要先看下Dialog的定义。 dialog是两个UA之间持续一段时间的点对点 SIP关系。dialog通过SIP消息建立,例如对 INVITE request的 2xx response。dialog由Call-ID、local tag和remote tag来区分,也就是Call-ID 、from-tag和to-tag就可以确定一个dialog…

java锁的分类

锁定义和特征 乐观锁 VS 悲观锁 区别 乐观锁不会添加锁,无锁算法,没有线程被阻塞。悲观锁拿到资源就加锁,线程被阻塞。 乐观锁:CAS算法 Compare-And-Swap(比较并交换)的缩写,轻量级锁。 Java中&#xff…

力扣(leetcode)第551题学生出勤记录I(Python)

551.学生出勤记录I 题目链接:551.学生出勤记录I 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符: ‘A’:Absent&#xff0…