JavaScript中的堆排序详解

本篇文章讲述了javascript中的堆排序,大家对javascript中的堆排序不了解的话或者对javascript中的堆排序感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧

堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:

1、大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列

2、小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列

堆排序动图演示

立即学习“Java免费学习笔记(深入)”;

555.gif

JavaScript代码实现:

var len;    //因为声明的多个函数都需要数据长度,所以把len设置成为全局变量function buildMaxHeap(arr) {   //建立大顶堆      len = arr.length;      for (var i = Math.floor(len/2); i >= 0; i--) {          heapify(arr, i);      }}function heapify(arr, i) {     //堆调整      var left = 2 * i + 1,          right = 2 * i + 2,          largest = i;        if (left  arr[largest]) {          largest = left;      }        if (right  arr[largest]) {          largest = right;      }        if (largest != i) {          swap(arr, i, largest);          heapify(arr, largest);      }}function swap(arr, i, j) {      var temp = arr[i];      arr[i] = arr[j];      arr[j] = temp;}function heapSort(arr) {      buildMaxHeap(arr);        for (var i = arr.length-1; i > 0; i--) {          swap(arr, 0, i);          len--;          heapify(arr, 0);      }      return arr;}

登录后复制

以上就是本篇文章的所有内容,大家要是还不太了解的话,可以自己多实现两边就很容易掌握了哦!

相关推荐:

Javascript堆排序算法详解

以上就是JavaScript中的堆排序详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2782943.html

(0)
上一篇 2025年3月8日 16:41:22
下一篇 2025年3月8日 16:41:31

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JavaScript中的计数排序详解

    本篇文章讲述了javascript中的计数排序,大家对javascript中的计数排序不了解的话或者对javascript中的计数排序感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 计数排序的核心在于将输入的数据值转化为…

    2025年3月8日
    200
  • JS设计模式之原型模式详解

    这次给大家带来js设计模式之原型模式详解,使用js原型模式的注意事项有哪些,下面就是实战案例,一起来看一下。 概念:原型模式是指用原型实例指向创建对象的种类,并通过拷贝这些原型创建新的对象。对于原型模式,我们利用javascript原型继承…

    编程技术 2025年3月8日
    200
  • javascript如何实现小球跳动效果

    这次给大家带来javascript如何实现小球跳动效果,javascript实现小球跳动效果的注意事项有哪些,下面就是实战案例,一起来看一下。 今天介绍的是一种通过javascript实现的一种炫酷的动画效果,具体实现特效我通过图片展示给大…

    2025年3月8日
    200
  • 细说JavaScript中的作用域与变量

    本篇文章讲述了JavaScript中的作用域与变量,大家对JavaScript中的作用域与变量不了解的话或者对JavaScript中的作用域与变量感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 变量作用域 作用域:就是变…

    2025年3月8日
    200
  • 好用的js插件分享

    从一些开源网站上下载下来的 后台管理系统模板一般会有很多的js ,其js 的功能是什么呢?这里随手查询了一下,记录下来,希望本文能帮助到大家。 正文: 1.zDialog.js 各种弹窗插件 详细案例:http://www.2ky.cn/P…

    2025年3月8日 编程技术
    200
  • vue-cli初始化一个vue.js项目的方法实例

    解析打包.vue文件 vue为了能够使我们在项目开发中对组件进行更好的维护,提供了一个单文件组件系统,vue把每一个独立的组件放在一个.vue的文件中,在这个文件中提供基础三个自定义标签:1. template2. script3. sty…

    编程技术 2025年3月8日
    200
  • javascript实现线程以及事件循环详解

     本篇文章讲述了javascript实现线程以及事件循环,大家对javascript实现线程以及事件循环不了解的话或者对javascript实现线程以及事件循环感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 1.为什么说…

    2025年3月8日
    200
  • vuejs实现插件状态管理详解

    本篇文章讲述了vuejs实现插件状态管理,大家对vuejs实现插件状态管理不了解的话或者对vuejs实现插件状态管理感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 对于新手来说,一开始接触vuex时候只听说它很强大,很好…

    2025年3月8日
    200
  • JavaScript实现事件委托方法详解

    本篇文章讲述了JavaScript实现事件委托方法,大家对JavaScript实现事件委托方法不了解的话或者对JavaScript实现事件委托方法感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 基本概念 事件委托,通俗地…

    2025年3月8日
    200
  • js无缝滚动的实例分享

    本文主要和大家分享js无缝滚动的实例,希望能帮助到大家。效果原理:让ul一直向左滚动 复制li,改变ul的宽度, 进行判断,是否越界 如果越界,重新定位。 控制向左向右,设定一个speed,更改其值的正负。 nbsp;html>   …

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论