计数排序

  • 计数排序伪代码:
a <- {
  '0':0,  '1':2,   '2':1,  '3':56,  '4':3,  '5':67,  '6':3,  'length:7'
}
hash <- {}                   // 定义一个空的 hash 

// 入桶
index <- 0
while index < a['length']      // index可取到的值0、1、2、3、4、5、6
    number <- a[index]         // number可取到的值0、2、1、56、3、67
    if hash[number] == undefined           // hash[number] 不存在时
        hash[number] = 1            // hash[number] 对应的计数为1
    else
        hash[number] <- hash[number] + 1      // 若此数已存在,计数加1
    end
    index <- index + 1
end        // hash={‘0’:1,‘1’:1,‘2’:1,‘3’:2,‘56’:1,‘67’:1}

// 出桶,遍历 hash
index2 <- 0
max <- findMax(a)   // 用函数findMax找出数组a的最大值67,赋值给max
newArr <- {}       // 声明一个新的数组
while index2 <= max   // 或写为 index2
  • 计数排序流程图:
计数排序_第1张图片
计数排序流程图

你可能感兴趣的:(计数排序)