(一)选择排序之一:堆排序

选择排序学过的有三种:简单选择排序、树形选择排序、堆排序

今天先来简单的了解一下堆排序:

  完全二叉树,即从头到尾,从左到右依次排序,符合大堆(小堆)都行,即ki>=k2i && ki >= k2i+1
   由于此处使用的是数组,则最长为array.length-1,并且 ki>=k2i+1 && ki >= k2i+2

下面的例子是百度上搜的,便于理解

                        

实例如下:

public class MyHeap {public static void main(String[] args) {int[] array = {49,38,65,97,76,13,27,49 };print(array);HeapSort(array);print(array);}public static int[] HeapSort(int[] array){int n = (array.length-1)/2;for (int i = n; i >= 0; i--) {MaxHeap(array,i);}return array;}/**判断一个元素与其i*2+1(2)的关系*/public static int[] MaxHeap(int[] array,Integer i){int large = i;int index = 2*i+1;if(index< array.length && array[i]>array[index]){large = index;}index = 2*i +2;if(index< array.length && array[i]>array[index]){if( array[large]>array[index] ){large = index;}}if(large != i){int temp =array[i];array[i] = array[large];array[large] = temp;print(array);//每次交换顺序有打印if(large <= array.length/2){MaxHeap(array,large);//交换后,如果大的一层有下层,则再次判断大的一层是否符合}}return array;}/**打印数组*/public static void print(int[] array){for (int i = 0; i < array.length; i++) {System.out.print(array[i] + " ");}System.out.println();}
}

  

转载于:https://www.cnblogs.com/blogofcookie/p/5845586.html

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

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

相关文章

html百分比代码怎么写,参考Bootstrap写的一个带百分比的进度条(附源码)

最近需要写一个进度条的效果&#xff0c;网上找了一些&#xff0c;但都不能完美的实现需求。于是就自己改造了一个&#xff0c;效果如下图&#xff1a;因为动态图太大&#xff0c;我上传到 GitHub 了&#xff0c;就不在博客上再上传了。百分比跟随进度条移动&#xff0c;百分比…

mesh和wifi中继的区别_深度解读Mesh路由和无线中继的差异,谁才是性价比之选?...

对于居住大户型或者跃层户型的用户来说&#xff0c;由于房屋结构复杂&#xff0c;还有各种转角墙体的阻隔&#xff0c;一台路由器已经无法满足WiFi覆盖需求&#xff0c;单路由家庭的WiFi覆盖总是有死角。为了解决WiFi信号差的问题&#xff0c;很多人直觉反应就是简单粗暴的多加…

sessionStorage localStorage cookie

sessionStorage & localStorage & cookie 概念 html5中的Web Storage包括了两种存储方式&#xff1a;sessionStorage和localStorage。sessionStorage用于本地存储一个会话&#xff08;session&#xff09;中的数据&#xff0c;这些数据只有在同一个会话中的页面才能访问…

应山有学计算机编程吗,周应山-武汉纺织大学材料科学与工程学院

周应山&#xff0c;博士&#xff0c;材料科学与工程学院教授&#xff0c;硕士生导师。2008年毕业于武汉大学化学与分子科学学院高分子化学与物理专业。主要从事天然纤维材料、光聚合生物医用材料、3D打印生物医用材料的应用基础研究&#xff0c;目前主持国家自然科学基金、湖北…

fast group合计 report_FastReport报表设计.doc

FastReport报表设计FastReport报表设计目录5.1 前言5.2 基本概念及操作5.3 报表设计与范例5.4 常用功能及函数5.5 报表设计常用技巧5.1 前言汽车业务管理系统(VBMS)使用FastReport3.0报表系统设计报表。本文主要描述使用FastReport设计报表的基本概念、使用方法、设计技巧和范例…

$(this).attr(checked, true); 设置不了

<script src"../js/jquery-1.7.2.min.js" type"text/javascript"></script> 用 $(this).attr("checked", true); <script src"/js/jquery.js" type"text/javascript"></script> 用 $(this).p…

计算机英语四六级对调剂有影响吗,你知道四六级对于考研的影响程度吗?

原标题&#xff1a;你知道四六级对于考研的影响程度吗&#xff1f;►报考方面无影响根据全国硕士研究生招生简章规定&#xff0c;考研需大学本科或同等学力即可&#xff0c;对四六级成绩没有硬性规定。即是考研本身对四六级成绩是没有直接要求的!要求的是考研英语过线。但是&am…

pve 加大local容量_proxmox ve (PVE) 增加 local 目录的大小即扩容

最近又到了一台gen8又开始了瞎几把折腾的道路 TF卡32g proxmox 安装完后默认分配给了 local 目录7G,local-lvm 是20G 由于虚拟机备份文件VZDump默认是存储到local目录的,再加上上传的IOS镜像,100G很经常不够用,那怎么扩容增加空间呢? 首先 fdisk -l 命令,查看/dev/mapper…

认识css

css css样式:css是英文Cascading Style Sheets的缩写,称为层叠样式表&#xff0c;用于对页面进行美化&#xff0c;CSS的可以使页面更加的美观。基本上所有的html页面都或多或少的使用css。存在方式有三种&#xff1a;元素内联、页面嵌入和外部引入 语法&#xff1a;style key1…

利用计算机找出函数关系式,使用 CHOOSE 查找函数中类似于表的信息 - Excel公式函数运用大全...

本文介绍 Microsoft Excel 中 CHOOSE 函数的公式语法和用法。说明使用 index_num 返回数值参数列表中的数值。 使用 CHOOSE 可以根据索引号从最多 254 个数值中选择一个。 例如&#xff0c;如果 value1 到 value7 表示一周的 7 天&#xff0c;那么将 1 到 7 之间的数字用作 ind…

undertale人物_传说之下所有人物的照片

杜康为中国史传的“酿酒始祖”&#xff0c;根据不同地区的民间传说&#xff0c;造酒圣人杜康又有黄帝大臣、夏代国君、周代酿酒圣人以及汉代杜康之说。以下是小编为你精心整理的杜康的人物传说&#xff0c;希望你喜欢。杜康的人物传说黄帝大臣传说在黄帝的时候&#xff0c;有一…

Objective-C Runtime 运行时之四:Method Swizzling

理解Method Swizzling是学习runtime机制的一个很好的机会。在此不多做整理&#xff0c;仅翻译由Mattt Thompson发表于nshipster的Method Swizzling一文。 Method Swizzling是改变一个selector的实际实现的技术。通过这一技术&#xff0c;我们可以在运行时通过修改类的分发表中s…

计算机三级数据库2020年试题,2020年计算机三级数据库考试模拟强化试题及答案...

【导语】“数据库技术”科目考核数据库系统基础知识及数据库应用系统项目开发和维护的基本技能&#xff0c;下文是无忧考网为您搜集整理的2020年计算机三级数据库考试模拟强化试题及答案&#xff0c;有需要的考生不妨多多参考一下我们为您分享的内容。1.数据集成是数据仓库建立…

@loadbalanced在哪个包里面_ABB机器人-选项包

ABB机器人业务有RobotWare 系列产品&#xff0c;Robotware-OS:这个是机器人控制器操作系统&#xff0c;RobotWare-OS 为基础机器人编程和运行提 供了所有必要的功能。买机器人会预装RobotWare-OS。RobotWare 选件: 这个是机器人选项包&#xff0c;RobotWare-OS类似于Windows&am…

abctod_123456

...转载于:https://www.cnblogs.com/gottheg/p/5859591.html

计算机复位启动如何操作,详细介绍计算机的启动方式(冷启动、热启动、复位启动)、注销、待机...

一&#xff1a;计算机的启动方式①冷启动&#xff0c;指计算机在没有加电的状态下初始加电&#xff0c;一般原则是&#xff0c;先开外设电源&#xff0c;后开主机电源&#xff0c;因为主机的运行需要非常稳定的电源&#xff0c;为了防止外设启动引起电源波动影响主机运行&#…

1562区别 洛达1552_洛达1562A与洛达1536u与杰里有哪些区别呢?

由于上一篇文章&#xff0c;有很多人问我有什么区别&#xff0c;怎么判断是1562a以及铂金标anc以及芯片之间的差距等等有关问题&#xff0c;今天特意给大家写下这篇文章&#xff0c;废话就不多说了&#xff0c;大家看接下来的文章吧&#xff01;。相信大家应该对AirPodspro已经…

计算机软件 专利挖掘,专利挖掘五步法,你学会了吗?

专利挖掘方法1.专利挖掘五步法专利挖掘有没有一套通用的流程&#xff0c;既可以不遗漏任何技术创新点&#xff0c;又可以对每个技术创新点进行深入的拓展呢&#xff1f;笔者提出的专利挖掘五步法&#xff0c;或许可以解决此问题。专利挖掘五步法&#xff0c;是指专利挖掘团队按…

大数据相关技术说明(一)

1.什么是ETL&#xff1f; ETL&#xff0c;Extraction-Transformation-Loading的缩写&#xff0c;中文名为数据抽取、转换和加载。ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成&#xff0c;最后加载到数据仓库或数据集…

catia利用宏批量改名的方法_谁有CATIA批量改名的宏程序啊

-----------------------------------------------------------批量重命名后批量保存程序说明&#xff1a;程序实现在Product下&#xff0c;对第一层结构树内零件批量重命名&#xff0c;并将重命名后的零件以新零件名保存在当前路径下。程序运行前应先手动将不需要重命名的零部…