当前位置: 首页 > 编程日记 > 正文

堆排序——HeapSort

基本思想:


图示: (88,85,83,73,72,60,57,48,42,6)


平均时间复杂度:

O(NlogN)由于每次重新恢复堆的时间复杂度为O(logN),共N - 1次重新恢复堆操作,再加上前面建立堆时N / 2次向下调整,每次调整时间复杂度也为O(logN)。二次操作时间相加还是O(N * logN)。

Java代码实现:

public class HeapSortTest {public static void main(String[] args) {// TODO Auto-generated method stubint[] arr = new int[] { 10, 3, 2, 5, 6, 1, -2, 3, 14, 12, 3, 8, 55, 44,-10 };print(arr);heapSort(arr);System.out.println("排序后的数组:");print(arr);}private static void print(int[] a) {for (int i = 0; i < a.length; i++) {System.out.print(a[i] + "\t");}System.out.println();}private static void swap(int[] a, int i, int j) {a[i] = a[i] + a[j];a[j] = a[i] - a[j];a[i] = a[i] - a[j];}private static void heapSort(int[] a) {for (int i = a.length - 1; i >= 0; i--) {createMaxHeap(a, i);swap(a, 0, i);print(a);}}private static void createMaxHeap(int[] a, int lastIndex) {for (int i = (lastIndex - 1) / 2; i >= 0; i--) {int k = i;while ((2 * k + 1) <= lastIndex) {int biggerIndex = 2 * k + 1;if (biggerIndex < lastIndex) {if (a[biggerIndex] < a[biggerIndex + 1]) {biggerIndex++;}}if (a[k] < a[biggerIndex]) {swap(a, k, biggerIndex);k = biggerIndex;} else {break;}}}}
}

转载于:https://www.cnblogs.com/diyishijian/p/7811459.html

相关文章:

一个web蠕虫的简单实现

在这之前先鄙视下一些人发现漏洞就挂马的无耻行为&#xff0c;我曾经因为一个公开的漏洞而在一个网站站上发现24个各个所谓组织&#xff0c;所谓黑客的后门&#xff0c;鄙视&#xff01;所谓蠕虫&#xff0c;其本质是利用计算机或者应用程序的漏洞进行感染和传播的一段程序&…

SpringBoot设置Session失效时间

1 #Session超时时间设置&#xff0c;单位是秒&#xff0c;默认是30分钟 2 server.session.timeout10 然而并没有什么用&#xff0c;因为SpringBoot在TomcatServletWebServerFactory代码中写了这个 1 private long getSessionTimeoutInMinutes() { 2 Duration sessi…

js url传值中文乱码完美解决(JAVA)

首先在你的jsp页面这样更改&#xff1a; var url"你要传入的Action的位置&ipid"ipid"&keyWord"key; 这里的key是中文&#xff0c;从input中取到值后&#xff0c;使用alert(key)发现中文没有乱码。 那么我们可以对url进行一下处理&#xff1a;urlen…

Angular应用中配置全局路径映射

Angular应用中配置全局路径映射1. tsconfig.json文件配置说明2. 配置全局路径映射2.1 指定baseUrl属性值2.2 配置paths属性值2.3 使用示例为了避免移动文件时调整基本文件的引用路径&#xff0c;或者为了引用部分文件时缩短引用路径&#xff0c;可以在配置文件中配置全局路径映…

对Oracle中索引叶块分裂而引起延迟情况的测试和分析

在版本10.2.0.4未打上相关one-off补丁的情况下&#xff0c;分别对ASSM和MSSM管理模式表空间进行索引分裂测试&#xff0c;经过测试的结论如下&#xff1a; l 在10gr2版本中MSSM方式是不能避免索引分裂引起交易超时问题&#xff1b; l 10.2.0.4上的one-off补丁因为目前仅存在L…

node.js和npm版本升级及升级过程中遇到的问题和解决方案

Node.js和NPM版本升级1. 安装Node.js1.1 版本检查1.2 下载安装程序1.3 安装2. npm升级2.1 版本检查2.2 升级3. 检查Node.js和npm之间的版本对应关系4. 检查Angular CLI、Angular、Node.js、TypeScript 和 RxJS 兼容性矩阵最初在本地安装Node.js和npm时&#xff0c;是通过Angula…

学习进度(5)

记录时间&#xff1a; 第六周 所花时间&#xff08;包括上课&#xff09; 20h 代码量&#xff08;行&#xff09; 400行 博客量&#xff08;篇&#xff09; 0篇 了解到的知识点 结对开发石家庄地铁软件&#xff0c;迪杰斯特拉算法的应用 转载于:https://www.cnblogs.c…

Windows搭建wnmp

http://www.cnblogs.com/wujuntian/p/7252343.html转载于:https://www.cnblogs.com/xiaobai-y/p/7815945.html

我的名字叫博客

我的部落是一个小部落&#xff0c;人口比较少&#xff0c;资源很贫瘠&#xff0c;但是我的人们很努力&#xff0c;他们都是最强的&#xff01;转载于:https://www.cnblogs.com/cchenry/archive/2009/06/25/1511162.html

实例15 判断某一年是否为闰年

package wjf; import java.util.Scanner; public class wjf1{public static void main(String[] args){ //主方法Scanner scannew Scanner(System.in); System.out.println("请输入一个年份"); //向控制台输出一个提示信息long year;try{yearsc…

前端开发知识总结思维导图

前端开发扮演的一个角色&#xff1a; 前端开发知识点总结&#xff1a; 转载于:https://www.cnblogs.com/zhaodagang8/p/7821427.html

Angular应用提高打包速度

当Angular应用功能不断增加时&#xff0c;其打包速度会变慢&#xff0c;可以尝试使用以下方法缩短打包时间。 打开node_modules/webpack/lib/optimize/ModuleConcatenationPlugin.js文件&#xff0c;注释以下代码片段&#xff1a; for (let i 0; i < newModule.dependencie…

iCup,USB加热饮品方案

词条&#xff1a; iCup USB加热杯 USB电器 猛料&#xff1a; 其实看用的macbook作为例子&#xff0c;就知道这个设计很有一段时间啦&#xff0c;用i打头来为苹果打造各种莫名其妙的周边产品也是前几年的潮流&#xff0c;iCup出自Onur Karaalioglu的设计&#xff0c;将USB作为加…

Angular 文件上传与下载

Angular文件上传与下载文件上传方式1 使用NG ZORRO中的组件。文件下载方式1 直接下载方式2 通过HTTP请求后端数据的方式进行下载文件上传 方式1 使用NG ZORRO中的组件。 文件下载 方式1 直接下载 已知明确的下载链接&#xff0c;可以直接进行下载。 <a href"downlo…

包装类接受string 会自动将数字类型string转换成对应得包装类型

转载于:https://www.cnblogs.com/classmethond/p/10663229.html

tensorflow常用函数解析

一、tf.transpose函数的用法 tf.transpose(input, [dimension_1, dimenaion_2,..,dimension_n]):这个函数主要适用于交换输入张量的不同维度用的&#xff0c;如果输入张量是二维&#xff0c;就相当是转置。dimension_n是整数&#xff0c;如果张量是三维&#xff0c;就是用0,1,2…

FLASH处理图像的移动、缩放、旋转、颜色变换的类推荐。

这3个都是比较好的外部类&#xff0c;帮助操作图像的。 教程也比较详细。 看了以后发现&#xff0c;需要把图形学的书翻出来再补补课鸟... http://www.adobe.com/devnet/flash/articles/matrix_transformations_print.html http://blog.joa-ebert.com/imageprocessing-library/…

机器学习——XGBoost大杀器,XGBoost模型原理,XGBoost参数含义

0.随机森林的思考 随机森林的决策树是分别采样建立的&#xff0c;各个决策树之间是相对独立的。那么&#xff0c;在我们得到了第k-1棵决策树之后&#xff0c;能否通过现有的样本和决策树的信息&#xff0c; 对第m颗树的建立产生有益的影响呢&#xff1f;在随机森林建立之后&…

使用存储过程更新数据库!成功了但是返回值为 -1 的变态问题的解决办法!

今天遇到个表态的问题&#xff01;使用带事务的存储过程执行sql语句&#xff0c;看数据库里面插入更新都正常&#xff01; 但是返回值一直为-1&#xff01; 头那个大哦&#xff01;先贴2个存储过程吧&#xff01;看大侠们能否找到问题的存在 USE [My_DB] GO/****** Object: St…

poj2289二分图多重匹配

题意&#xff1a;给你一张二分图&#xff0c;求右边点到汇点的最小容量&#xff08;保证流量为n&#xff09;是多少 题解:二分答案&#xff0c;每次重新建边跑最大流&#xff0c;看是不是为n就好了 #include<map> #include<set> #include<cmath> #include<…

Express应用配置端口

Express应用设置端口方法1 静态修改--直接修改代码中配置的默认端口号方法2 动态修改--修改代码逻辑使其获取启动命令中的端口号参数相关文章在Express应用创建成功后&#xff0c;应用会自动配置一个端口号&#xff0c;比如3000&#xff0c;有时会遇到端口号被占用的情况&#…

Oracle中PL/SQL的循环语句

PL/SQL的三种形式的循环&#xff1a;1.LOOP&#xff08;无条件循环&#xff09;&#xff1a;loopstatements;end loop;2.WHILE&#xff08;有条件循环&#xff09;&#xff1a;while condition loopstatements;end loop;3.FOR&#xff08;固定次数循环&#xff09;&#xff1a;…

处理器调度算法

1. P117页,练习15&#xff1a;最高响应比 HRRF&#xff1a; 作业 提交时刻 运行时刻 开始时刻 完成时刻 周转时间/min 带权周转时间/min 1 10:00 2:00 10:00 12:00 120 120/120 2 10:10 1:00 12:25 13:25 195 195/60 3 10:25 0:25 12:00 12:25 120 …

bzoj4516

后缀自动机 留个板子 upd:大概懂了 每次新加入的npRight集合肯定只有最后一个位置&#xff0c;那么求所有长得不一样的子串贡献就是Max-Min1,因为Right集合只有这一个位置&#xff0c;所以这Max-Min1个子串只出现在最后一个位置。 #include<bits/stdc.h> using namespace…

npm : 无法加载文件 D:\...\nodejs\npm.ps1,因为在此系统上禁止运行脚本

问题&#xff1a; 在VSCode终端使用npm命令时&#xff0c;出现如下报错信息&#xff1a; npm : 无法加载文件 D:\ProgramFiles\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?Link ID135170 中的 …

Mybatis注解学习记录

Mybatis注解使用1. SQL语句映射1.1 Select注解&#xff1a;实现查询功能1.1.1 用法1.2 Insert注解&#xff1a;实现新增功能1.2.1 用法1.3 Update注解&#xff1a;实现更新功能1.3.1 用法1.4 Delete注解&#xff1a;实现删除功能1.4.1 用法2. 结果集映射2.1 Results注解&#x…

路由和交换机工作原理

路由器与交换机的工作原理 计算机网络往往由许多种不同类型的网络互连连接而成。如果几个计算机网络只是在物理上连接在一起&#xff0c;它们之间并不能进行通信&#xff0c;那么这种“互连”并没有什么实际意义。因此通常在谈到“互连”时&#xff0c;就已经暗示这些相互连接的…

嵌套选项卡自动播放

HTML <div class"box" id"box"><ul class"top" id"top"><li class"fl">专题</li><li class"fl">视频</li></ul><div class"clearFix" id"cont"…

Facebook 与 Google 正在主导在线身份验证市场

OpenID 公司 JanRain 的一项研究发现&#xff0c;用户在第三方网站进行身份验证时&#xff0c;最喜欢使用 Google 和 Facebook 的身份验证服务。Facebook 的验证服务 在媒体&#xff0c; 零售&#xff0c;技术等领域略微领先&#xff0c;而 JanRain 的17万份客户数据显示&#…

WIN2K/XP/2003 + APACHE + ASP + PHP + MYSQL 的简易实现

至目前总算完成了WIN2K/XP/2003 APACHE ASP PHP MYSQL这样一个建站项目&#xff0c;回过头来仔细想想也并不复杂。只是经过了反复的安装、卸载、研究、测试带找资料。真正的步骤却也没什么难的&#xff0c;但如果让你从头研究可能也是一件很头痛的事情了&#xff01;所以打…