用Java学习堆排序

作者 : IT 大叔 本文共394个字,预计阅读时间需要1分钟 发布时间: 2020-10-10

我将介绍如何使用JavaScript进行堆排序堆排序与选择排序的工作方式相似,因为它们都找到最大元素并将其放在最后。

辅助方法

由于我们将要在元素之间进行比较,因此最好有一个可以轻松交换元素位置的方法。我们可以使用一些精美的ES6语法轻松地做到这一点。

用Java学习堆排序插图

我们还将需要一种将数组变成最大堆的方法。请记住,这意味着每个节点将比其子节点具有更大的价值。

用Java学习堆排序插图(2)

排序

函数通过获取输入数组并将其转换为最大堆来工作。从这里开始,我们交换根节点和最后一个节点的位置,然后将堆的大小减一,从而有效地删除了最大值。然后,我们重复此过程,直到堆中没有更多的值为止。

用Java学习堆排序插图(4)

堆排序的运行时为O(nlogn)。这意味着使用堆排序的一种好情况是,当您想要一个一致的定时排序(在游戏中)但不一定每次都需要最快的解决方案时。堆排序将始终具有O(nlogn),而快速排序通常会更快,但可能会非常慢。

谢谢阅读!这篇文章的代码可以在这里找到。

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 用Java学习堆排序

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论