欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS 堆排序

程序员文章站 2022-03-11 23:02:50
...
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]));

 

效果图:

JS 堆排序
            
    
    博客分类: 境-JS 排序堆排序JS 堆排序
 

感谢大树的帮助。

 

 

 

 

 

 

 

  • JS 堆排序
            
    
    博客分类: 境-JS 排序堆排序JS 堆排序
  • 大小: 7 KB