美文网首页
排序算法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]--;
    }
  }
}

相关文章

  • 线性排序

    桶排序、计数排序、基数排序 一、线性排序算法介绍 1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法...

  • 排序算法8-计数排序

    计数排序 平均时间复杂度:O(n+k) 最好情况:O(n+k) 最坏情况:O(n+k) 空间复杂度:O(k) 排序...

  • 算法and数据结构

    算法 冒泡排序 选择排序 计数排序

  • 排序算法-8---计数排序

    # 排序算法-8---计数排序 概念 计数排序(Counting sort)是一种稳定的线性时间排序算法。该算法于...

  • 08-计数排序(Counting Sort)

    计数排序(Counting Sort) 本节内容,继续介绍排序算法,在本节内容之前,介绍过7种排序算法,那计数排序...

  • 排序算法

    常见排序算法 本文涉及的算法有:冒泡排序选择排序计数排序 冒泡排序 伪代码 流程图 选择排序 伪代码 流程图 计数...

  • (转)排序算法

    排序算法点这里 数据结构与算法——计数排序、桶排序、基数排序

  • LeetCode大全

    1.常见排序算法: 常见的排序算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、...

  • 算法入门——计数排序、桶排序、基数排序

    上篇文章我们学习了算法入门——归并排序、希尔排序,这篇文章我们学习算法入门——计数排序、桶排序、基数排序。 计数排...

  • 面试算法知识梳理(12) - 二叉树算法第二部分

    面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法 插入排序 希尔排序 选择排序 冒泡排序 计数排序 ...

网友评论

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

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