我试图理解鸽孔分类的概念,但我不明白。 如果有人可以轻松地向我解释它,对我会非常有帮助!
答案 0 :(得分:0)
Pigeonhole algorithm是一种排序算法,用于输入数据的元素数量和可能的键值数量(即,为它们自由选择的标记)大致相同,这基本上意味着每个元素都是唯一的,或者在给定列表中重复次数相对较少。
实际执行鸽洞算法的步骤如下:
有关上述步骤的图形说明,请观看this video。
Python实现:
def pigeonhole_sort(a):
mi = min(a)
size = max(a) - mi + 1
holes = [0] * size
for x in a:
holes[x - mi] += 1
i = 0
for count in xrange(size):
while holes[count] > 0:
holes[count] -= 1
a[i] = count + mi
i += 1