`

JS 堆排序

阅读更多
function heapSort(arr) {
  var len = arr.length;
  function swap(arr, rootIndex, maxIndex) {
      var temp = arr[rootIndex];
      arr[rootIndex] = arr[maxIndex];
      arr[maxIndex] = temp;
  }
  function diff(arr, index) {
      var leftIndex = 2 * index + 1;
      var rightIndex = 2 * index + 2;
      var maxIndex = index;

      if (leftIndex < len && arr[leftIndex] > arr[maxIndex]) {
          maxIndex = leftIndex
      }
      if (rightIndex < len && arr[rightIndex] > arr[maxIndex]) {
          maxIndex = rightIndex
      }
      if (maxIndex !== index) {
          swap(arr, index, maxIndex);
          diff(arr, maxIndex);
      }
  }
  for (var i = Math.floor(len / 2); i >= 0; i--) {
      diff(arr, i)
  }
  for (var j = len - 1; j >= 0; j--) {
      len--;
      swap(arr, 0, j);
      diff(arr, 0);
  }
  return arr;
}

console.log(heapSort([-4, 8, 6, 3, 0, 2, 5, -1, 4, 1]));

 

效果图:


 

感谢大树的帮助。

 

 

 

 

 

 

 

  • 大小: 7 KB
0
0
分享到:
评论

相关推荐

    JavaScript堆排序1

    JavaScript中的堆排序是一种基于比较的排序算法,它利用了数据结构中的“堆”这一概念,通常采用完全二叉树的形式。在完全二叉树中,堆可以分为两种类型:大顶堆和小顶堆。在大顶堆中,每个父节点的值都大于或等于其...

    Javascript堆排序算法详解

    堆排序分为两个过程: 1.建堆。 堆实质上是完全二叉树,必须满足:树中任一非叶子结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。 堆分为:大根堆和小根堆,升序排序采用大根堆,降序排序采用...

    通过javascript实现堆排序示例代码.zip

    堆排序(Heap Sort)是一种基于堆数据结构的比较排序算法。堆是一个近似完全二叉树的结构,并同时满足堆性质:即子节点的键值或索引总是小于(或大于)它的父...压缩包文档记录的是一个用JavaScript实现堆排序的示例。

    排序方法总结(包括快速排序,堆排序,归并排序)

    这里我们主要探讨四种排序方法:插入排序、快速排序、堆排序和归并排序。 1. **插入排序**: - **直接插入排序**:是最简单的排序方式之一,每次将一个待排序的元素与已排序序列中的元素依次比较,找到合适的位置...

    用javascript实现的十大排序算法详解

    在编程领域,排序算法是计算机科学的基础之...而对于大规模数据,快速排序、归并排序或堆排序等更高效的方法则更为合适。同时,了解这些算法也能帮助开发者更好地理解高级数据结构和算法,为解决复杂问题打下坚实基础。

    排序算法: 冒泡排序,桶排序,计数排序,堆排序,插入排序,合并排序,快速排序,基数排序,选择排序,希尔排序 实现语言: Vue

    4. **堆排序**:堆排序是一种基于比较的排序算法,利用了完全二叉树的特性。首先构造一个大顶堆或小顶堆,然后将堆顶元素与末尾元素交换,调整堆,重复此过程。其平均时间复杂度为O(n log n)。 5. **插入排序**:...

    数据结构领域:多种编程语言实现高效稳定的堆排序算法

    内容概要:本文深入解析了堆排序这种高效的基于堆数据结构的排序算法,重点介绍了它的基本思想,即利用二叉堆这一特性进行排序,并将其在五种流行的编程语言中实现了具体的代码示例,分别为JavaScript、Python、Go、...

    9种不同的js排序方法

    系统自带的排序API,冒泡排序,快速排序,插入排序,选择排序,希尔排序,归并排序,堆排序,计数排序

    heap:堆和堆排序的Javascript实现

    本文将深入探讨堆的概念以及如何在JavaScript中实现堆排序算法。 堆通常是一个完全二叉树,其每个节点的值都大于或等于(最大堆)或小于或等于(最小堆)其子节点的值。这种性质使得堆可以方便地找到最大或最小的...

    图文详解Heap Sort堆排序算法及JavaScript的代码实现

    在JavaScript实现堆排序时,可以通过递归或迭代的方式来实现Max-Heapify函数,但递归方式由于需要调用栈,性能上会略微逊于迭代方式。 JavaScript代码实现堆排序的函数可以定义如下: ```javascript function ...

    JavaScript排序算法动画演示效果的实现方法

    ### JavaScript排序算法动画演示效果的实现方法 实现JavaScript排序算法动画演示效果是一个涉及前端技术栈的有趣话题。其核心在于如何将排序算法的每一步骤用动画的形式展示给用户,同时保证动画的流畅性和准确性。...

    基于javascript排序算法

    基于javascript的排序算法源码,包括冒泡排序、选择排序、希尔排序、插入排序、快速排序、归并排序、基数排序、堆排序

    javascript排序算法实现

    堆排序利用了完全二叉树的特性构建最大(或最小)堆,然后将堆顶元素与末尾元素交换并调整堆。它的时间复杂度为O(n log n),且是原地排序,无需额外空间。 在JavaScript中,这些排序算法可以通过函数实现,便于在...

    JavaScript-使用javascript开发的排序算法-sorting.zip

    在这个"JavaScript-使用javascript开发的排序算法-sorting.zip"压缩包中,很可能是包含了各种常见的排序算法实现,比如冒泡排序、插入排序、选择排序、快速排序、归并排序以及堆排序等。 1. **冒泡排序**:冒泡排序...

    sortjsJavaScript实现十个常用的排序算法库

    堆排序利用了堆数据结构的特性,将待排序数组构造成一个大顶堆或小顶堆,然后将堆顶元素与末尾元素交换,缩小排序范围,再重新调整堆,直至整个数组有序。 7. **计数排序(Counting Sort)** 计数排序适用于非负...

    常见排序算法JS版

    堆排序利用了二叉堆的性质,将数组转化为一个大顶堆或小顶堆,然后将堆顶元素与末尾元素交换,缩小排序范围。JavaScript实现如下: ```javascript function heapify(arr, n, i) { let largest = i; let left = 2 ...

    js代码-堆排序(将比较结果保存下来) 完全二叉树 双亲节点 i / 2 双亲子女的关系: 2i 和 2i + 1

    在JavaScript中,堆排序可以通过创建数组并利用数组索引来实现。`main.js` 文件可能包含了如下代码示例: ```javascript function heapify(arr, n, i) { // ... 堆调整代码 } function heapSort(arr) { // ... ...

Global site tag (gtag.js) - Google Analytics