zoukankan      html  css  js  c++  java
  • 计数排序

    计数排序有四个步骤:

    (1)首先会对每个输入进行频率统计,得到元素的频率表;

    (2)然后将频率表转换为该元素的开始索引

    (3)根据各个元素的开始索引,将相同元素分类到临时数组中。

    (4)最后将临时数组中的元素写回到原数组中。

     1 /*计数排序*/
     2 function countingSort(arr) {
     3     //找到最大最小值,计算差值
     4     var max_num = Math.max.apply(Math,arr);
     5     console.log("max:"+max_num);
     6     var min_num = Math.min.apply(Math,arr);
     7     console.log("min:"+min_num);
     8     var len = max_num-min_num+1;
     9     //计算频率
    10     var count = new Array(len + 1);
    11     count.fill(0); //填充0
    12     for (let i = 0; i < arr.length; i++) {
    13         //使用加1的索引,有重复的地方自增
    14         count[arr[i]-min_num+1]++;
    15     }
    16     console.log("count:"+count);
    17     //计算开始索引
    18     for (let i = 0; i < count.length-1; i++) {
    19         count[i+1] += count[i];
    20     }
    21     console.log("count:"+count);
    22     //元素按照开始索引分类,用到一个临时数组
    23     var result = new Array(arr.length);
    24     for (let i = 0; i < arr.length; i++) {
    25         // 填充一个数据后,count[i]自增,以便相同的数据可以填到下一个空位
    26         result[count[arr[i]-min_num]++] = arr[i];
    27     }
    28     for (var i = 0; i < arr.length; i++) {
    29         arr[i] = result[i];
    30     }
    31 }
    32 var arr = [3,2,5,4,6,1,9,5,3,0,1];
    33 countingSort(arr);
    34 console.log(arr);
  • 相关阅读:
    saltstack编写自定义模块
    saltstack数据系统Pliiar
    saltstack数据系统Grains
    saltstack正则匹配主机
    docker安装httpd+php为zabbix提供web服务
    saltstack安装部署
    zabbix报警(向消息中心发送报警信息)
    selenium用css、xpath表达式进行元素定位
    pytest+allure基础知识
    pythonGUI-PySide2的使用笔记
  • 原文地址:https://www.cnblogs.com/daheiylx/p/9815481.html
Copyright © 2011-2022 走看看