美文网首页
排序算法8-计数排序

排序算法8-计数排序

作者: 小杰66 | 来源:发表于2021-04-19 20:59 被阅读0次

    计数排序

    • 平均时间复杂度:O(n+k)
    • 最好情况:O(n+k)
    • 最坏情况:O(n+k)
    • 空间复杂度:O(k)
    • 排序方式:Out-place
    • 稳定性:稳定

    算法步骤:
    1.找出待排序的数组中最大值
    2.统计数组中每个值为i的元素出现的次数,存入数组的第i项
    3.对所有的计数累加
    4.填充目标数组

    function countSort(arr) {
      //最大值的获取直接通过api获取
      let maxValue = Math.max(...arr);
      let len2 = maxValue + 1;
      let arr2 = new Array(len2);
      let index = 0;
      let len = arr.length;
    
      for (let i = 0; i < len; i++) arr2[arr[i]] = (arr2[arr[i]] || 0) + 1;
      for (let j = 0; j < len2; j++) {
        while (arr2[j] > 0) {
          arr[index++] = j;
          arr2[j]--;
        }
      }
    }
    

    相关文章

      网友评论

          本文标题:排序算法8-计数排序

          本文链接:https://www.haomeiwen.com/subject/plkhlltx.html