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

排序算法----计数排序

作者: Coding破耳 | 来源:发表于2018-11-24 23:15 被阅读0次

假设现在有n个数需要进行从小到大的排序,现在使用计数排序方法进行实现。
假设这n个数为[9,7,28,76,3,1,55,7]。

a.第一步,得到n个数中最大的数k,然后声明一个大小为k+1的空hash表。
在举例中最大的数为76,则声明一个大小为77的hash1表如下:
{
“0”:undefined,
“1”:undefined,
……
”76”:undefined
}

b.第二步,读取这n个数,读到一个数时,将hash1中的该序号的值加1。
在举例中,读到9时,hash1[9]的值为undefined,则将值置为1,如下:
{
“0”:undefined,
“1”:undefined,
“2”:undefined,
“3”:undefined,
“4”:undefined,
“5”:undefined,
“6”:undefined,
“7”:undefined,
“8”:undefined,
“9”:1,
“10”:undefined,
……
”76”:undefined
}
读到最后一个7时,hash1[7]的值为1,则将值置为2,如下:
{
“0”:undefined,
“1”:1,
“2”:undefined,
“3”:1,
“4”:undefined,
“5”:undefined,
“6”:undefined,
“7”:2,
“8”:undefined,
“9”:1,
“10”:undefined,
……
”76”:1
}

c.第三步,创建一个大小为n的数组result。读取hash1,查看key值和对应的value值,value值是undefined时,跳过不处理;value值不是undefined时,是多少就往数组中存几个key值。
在举例中,hash1的值如下:
{
“0”:undefined,
“1”:1,
“2”:undefined,
“3”:1,
“4”:undefined,
“5”:undefined,
“6”:undefined,
“7”:2,
“8”:undefined,
“9”:1,
“10”:undefined,
……
”28”:1,
……
“55”:1,
…….
”76”:1
}
从key为0开始读取,
hash1[0]为undefined,跳过;
hash1[1]为1,往结果列表中存一个1;
。。。。。
hash1[7]为2,往结果列表中存两个7;
。。。。
最后结果为[1,3,7,7,9,28,55,76]

实现伪代码如下:

var startArr = [9,7,28,76,3,1,55,7]
var maxNum = findMax(startArr)
var hash1[maxNum+1] = undefined
for(var i = 0; i < startArr.length ; ++i)
{
    hash1[startArr[i]] = 1;
}

var resultArr;
for(var i = 0; i < maxNum ; ++i)
{
    if(hash1[i] != undefined)
    {
        var count = hash1[i];
        var pushCount = 0;
        while(pushCount < count)
        {
            resultArr.push(i);    
            pushCount++;
        }
    }
}

相关文章

  • 线性排序

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

  • 算法and数据结构

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

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

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

  • 08-计数排序(Counting Sort)

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

  • 排序算法

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

  • (转)排序算法

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

  • LeetCode大全

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

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

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

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

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

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

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

网友评论

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

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