Sorting 有人能帮我理解鸽子洞排序的概念吗?
我试图理解鸽子洞排序的概念,但我做不到。 如果有人能以一种简单的方式向我解释,那将对我非常有帮助 是一种排序算法,用于输入数据的元素数量和可能的键值数量(即自由选择的标记)大致相同的情况,这基本上意味着每个元素都是唯一的,或者在给定列表中重复次数相对较少 实际执行鸽子洞算法的步骤如下:Sorting 有人能帮我理解鸽子洞排序的概念吗?,sorting,Sorting,我试图理解鸽子洞排序的概念,但我做不到。 如果有人能以一种简单的方式向我解释,那将对我非常有帮助 是一种排序算法,用于输入数据的元素数量和可能的键值数量(即自由选择的标记)大致相同的情况,这基本上意味着每个元素都是唯一的,或者在给定列表中重复次数相对较少 实际执行鸽子洞算法的步骤如下: 在列表中查找最小和最大元素/值 使用max-min+1表达式查找列表的范围/大小 按照步骤2给出的范围大小,设置另一个初始为空的“鸽子洞”的辅助列表 访问输入列表的每个元素,并将其放在第二个列表的鸽子洞中。输入列
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
维基文章。你有没有尝试过谷歌和youtube来了解这一点