自己实现堆,你能写出堆排序吗?
互联网侦察
共 1681字,需浏览 4分钟
· 2021-11-10
前言
外援
public static void heapSort(int[] arr) {
PriorityQueue heap = new PriorityQueue<>();
for(int i = 0; i < arr.length; i++) {
heap.offer(arr[i]);
}
for(int i = 0; i < arr.length; i++) {
arr[i] = heap.poll();
}
}
内功
public static void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static void downAdjust(int[] arr, int parent, int end) {
int left = parent * 2, right = parent * 2 + 1;
if(left > end) {
return;
}
if(right <= end && arr[parent] < arr[right] && arr[left] < arr[right]) {
swap(arr, parent, right);
parent = right;
} else if(arr[parent] < arr[left]) {
swap(arr, parent, left);
parent = left;
} else {
return;
}
downAdjust(arr, parent, end);
}
public static void heapSort(int[] arr) {
for(int i = arr.length / 2; i >= 0; i--) {
downAdjust(arr, i, arr.length - 1);
}
for(int i = arr.length - 1; i > 0; i--) {
swap(arr, 0, i);
downAdjust(arr, 0, i - 1);
}
}
练习题
评论
女律师做擦边直播火了!称月入五千活不下去,直播能赚2万
近日,上海的一名年轻女律师火了——因为一句话,让她迅速成为舆论焦点。这位名为“是小冰心啊”的用户,在律师相关讨论帖中评论“去做擦边直播吧”,称自己律师收入月入5000元,直播收入2万元左右。她自称,“没有直播,我在上海活不下去”。据悉,该用户在多个社交平台曾发布舞蹈和普法结合视频,其上述言论引发热议
码农沉思录
0
偷偷告诉你如何一台电脑开多个微信!
大家好,我是轩辕。前几天在粉丝群里,有人问我是怎么在一台电脑上同时登录两个微信的?正好之前写过一篇文章,分析过原理,分享给没看过的小伙伴学习一下。手机端多开微信估计很多人都知道,像华为、小米等手机系统都对此做了支持,不过在运行Windows系统的电脑上怎么启动两个微信呢?其实很简单,你只需要写一个批
编程技术宇宙
0
盘点Lombok的几个骚操作,你绝对没用过!
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
0
堪称最优秀的Docker可视化管理工具——Portainer你真的会用吗?
来源:blog.csdn.net/shark_chili3007/article/details/123366179👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目
小哈学Java
0
JS的这些新特性,你都用过么?
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群作为一门不断演进的语言,JavaScript每年都会引入新特性。这些特性的加入,能够帮助我们编写更加简洁、高效、易于维护的代码。然而,并非所有新特性
程序员成长指北
1
五一抢票难,Github上这几个Python项目,你可以试试
又到五一长假啦(虽然其实就放了1天),大家是打算家里蹲or出去玩,又或者是在公司加班呢...今天给大家介绍三个和12306相关的项目,看看你是否用得上。/01/ py12306py12306购票助手,顾名思义,12306买票的~需要在python 3.6以上版本运行程序。1. 安装依赖gi
Crossin的编程教室
0
15种时间序列预测方法总结(包含多种方法代码实现)
向AI转型的程序员都关注了这个号👇👇👇在这篇文章中,我们将深入探讨时间序列预测的基本概念和方法。我们将首先介绍单元预测和多元预测的概念,然后详细介绍各种深度学习和传统机器学习方法如何应用于时间序列预测,包括循环神经网络(RNN)、一维卷积神经网络(1D-CNN)、Transformer、自回归模型(
机器学习AI算法工程
0
SpringBoot 实现图片防盗链功能
程序员的成长之路互联网/程序员/技术/资料共享 关注阅读本文大概需要 4 分钟。来自:blog.csdn.net/weixin_46157208/article/details/138051737前言出于安全考虑,我们需要后端返回的图片只允许在某个网站内展示,不想被爬虫拿到图片地
程序员的成长之路
0