`

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实现的十大排序算法详解

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

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

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

    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) { // ... ...

    heapify:我自己的二进制堆排序的TDD实现

    二进制堆排序是一种高效的排序算法,其基本思想是利用二叉堆的性质来实现数据的排序。在本文中,我们将深入探讨堆排序的原理、实现以及如何通过TDD(测试驱动开发)来构建自己的二进制堆排序算法。本文的重点是`...

    heap:Java中的MinMax堆和堆排序实现

    最小/最大堆数据结构和堆排序算法的完整javascript实现。 最小堆 最大堆 目录 。叶子() 。尺寸() 。克隆() 。已验证() 。使固定() 。种类() 。清除() Heap.heapify(清单) Heap....

Global site tag (gtag.js) - Google Analytics