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

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

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

  完全二叉树,即从头到尾,从左到右依次排序,符合大堆(小堆)都行,即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;百分比…

认识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…

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

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

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

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

计算机房防火要求,信息机房如何进行防火设计

众所周知&#xff0c;根据机房的使用性质、管理要求及重要数据丢失或网络中断在经济或社会上造成的损失或影响程度&#xff0c;可将电子信息机房分为A、B、C三级。那么&#xff0c;信息机房如何进行防火设计呢&#xff1f;信息机房如何进行防火设计一、选址计算机房建筑规模大、…

计算机串口通信的作用,串口通信的具体用途是什么

串行接口简称串口&#xff0c;也称串行通信接口或串行通讯接口(通常指COM接口)&#xff0c;是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送&#xff0c;其特点是通信线路简单&#xff0c;只要一对传输线就可以实现双向通信(可以直接利…

网络连接

网络连接状态&#xff1a; C: S: SYN_SEND             SYN_RECVESTABLISH             ESTABLISH FIN_WAIT1             CLOSE_WAITFIN_WAIT2             LAST_ACK TIME_WAIT      …

拯救者r7000怎么关闭触控板_联想拯救者R7000(2020版)上手体验,有没有AMD Yes?

联想作为一个老品牌&#xff0c;它的产品线有很多系列(电脑、手机、平板、智能家居)&#xff0c;而我们今天来聊一聊电脑系列中的联想拯救者系列电脑。今年的R7000在五月份发布&#xff0c;而我也在六月份入手了一台&#xff0c;被它的外观吸引。硬件方面的参数&#xff1a;小编…

warframe计算机拒绝访问,Win10运行warframe出现蓝屏DRIVER_CORRUPTED_EXPOOL怎么办

warframe是一款科幻题材的第三人称射击网游&#xff0c;一些用户在windows10系统运行warframe过程中经常出现了电脑蓝屏的现象&#xff0c;并且提示“DRIVER_CORRUPTED_EXPOOL”&#xff0c;这是怎么回事&#xff1f;RIVER CORRUPTED EXPOOL错误是由于Windows 10/8/7上的设备驱…

【SpringMVC学习07】SpringMVC中的统一异常处理

我们知道&#xff0c;系统中异常包括&#xff1a;编译时异常和运行时异常RuntimeException&#xff0c;前者通过捕获异常从而获取异常信息&#xff0c;后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。在开发中&#xff0c;不管是dao层、service层还是controller…

vue取通过key取value_彻底理解Vue中的Watcher、Observer、Dep

思考以下代码new Vue({el: #example,data(){return{obj:{a&#xff1a;1}}}, })当我们写下这行代码时,vue将我们在data内定义的obj对象进行依赖追踪.具体做法为执行new Observer(obj)//经过上面的代码&#xff0c;我们的obj对象会变为以下的样子 {obj:{a:1,__ob__:{ //Observer…

浏览器打开服务器上的图片无法显示,网页中的图片打不开怎么办?原因与解决办法...

最近有网友问小编这样一个很泛的问题&#xff1a;网页中的图片打不开怎么办&#xff1f;对于这个问题&#xff0c;其实导致的原因有很多&#xff0c;但也很好排除原因&#xff0c;主要从网络&#xff0c;网页&#xff0c;平台等当面综合去分析&#xff0c;就很容易可以找到答案…

WCF学习之旅—实现支持REST客户端应用(二十四)

WCF学习之旅—实现REST服务&#xff08;二十二&#xff09; WCF学习之旅—实现支持REST服务端应用&#xff08;二十三&#xff09; 在上二篇文章中简单介绍了一下RestFul与WCF支持RestFul所提供的方法&#xff0c;及创建一个支持REST的WCF服务端程序&#xff0c;本文介绍如何调…

arduino智能浇花系统_创新成果 | 养花神器——智能浇花机

养花的人应该多少都会遇到这样的问题&#xff1a;需要根据花的习性定时浇水&#xff0c;但给花浇水是个「技术活」&#xff0c;不记得浇水或水浇多了&#xff0c;都会影响花的生长。针对这个问题&#xff0c;可以研究制作一个简单、实用的自动浇花机。根据检测土壤的湿度&#…

导出怎么用_微信好友账号怎么导出?微信怎么备份通讯录?

微信好友账号怎么导出?微信怎么备份通讯录?对于经常使用微信社交的朋友&#xff0c;都有一个共同的烦恼&#xff0c;那就是微信只能加5000多个好友&#xff0c;平时还怕一个不小心误删了微信好友&#xff0c;不要烦恼&#xff0c;小编教你导出微信好友!情景一&#xff1a;登录…

cvpr 深度估计_CVPR再现黑科技!你还在相信“眼见为实”?

全文共2634字&#xff0c;预计学习时长7分钟经常听到有人说&#xff0c;我除了自己的眼睛&#xff0c;什么也不信。自从09年阿凡达(Avatar)电影上映以来&#xff0c;3D渲染、虚拟现实的逼真度总是让人叹为观止。而今&#xff0c;10年过去&#xff0c;最近计算机视觉领域顶级会议…

360浏览器查看服务器响应内容,360浏览器怎么看3个月以前的浏览记录?

360浏览器怎么看3个月以前的浏览记录&#xff1f;有时候我们想查找浏览器的浏览记录&#xff0c;这个比较简单&#xff0c;Ctrlh直接查看&#xff0c;或者如图直接查看。然而有些记录在3个月之前就坑爹了&#xff0c;浏览器是看不到的怎么办呢&#xff1f;比如几天是10月1号&am…

【Electron】Electron开发入门(一):开发环境搭建

刚接触Electronjs开发PC端桌面应用程序的时候&#xff0c;简直一头雾水&#xff0c;搜了网上很多教程&#xff0c;有的要么讲的零零碎碎&#xff0c;要么就是版本太低&#xff0c;很多API语法都不能用了&#xff1b;现在我把一些有用的教程归纳一下&#xff0c;并把目前最新Ele…

方差为什么用平方不用绝对值_为什么戚风蛋糕用玉米油而不用黄油?

刚开始做蛋糕的时候是最喜欢改配方的&#xff0c;认为糖太多了把糖减点&#xff0c;油太多了把油减点&#xff0c;黄油更香能不能把玉米油换成黄油&#xff0c;西点不是大都用黄油的&#xff1f;来&#xff0c;来&#xff01;我们来讨论下为什么戚风蛋糕要用玉米油而不用黄油&a…