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

假设现在有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++;
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容

  • [{"reportDate": "2018-01-23 23:28:49","fluctuateCause": n...
    加勒比海带_4bbc阅读 767评论 1 2
  • 删掉重新来一次吧,记得改那个脚本修改 /home/ubuntu/eos/scripts/install_depen...
    卢衍泓阅读 1,147评论 0 1
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,150评论 0 13
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,345评论 0 2
  • 最近晚自习辅导,发现有一些学生做题目时,总是面前放着习题的参考答案。题目看了一遍,没有多想,更没有冥思苦想,便急着...
    捞个一阅读 599评论 6 7