Sorting 有人能帮我理解鸽子洞排序的概念吗?

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

我试图理解鸽子洞排序的概念,但我做不到。 如果有人能以一种简单的方式向我解释,那将对我非常有帮助

是一种排序算法,用于输入数据的元素数量和可能的键值数量(即自由选择的标记)大致相同的情况,这基本上意味着每个元素都是唯一的,或者在给定列表中重复次数相对较少

实际执行鸽子洞算法的步骤如下:

  • 在列表中查找最小和最大元素/值
  • 使用max-min+1表达式查找列表的范围/大小
  • 按照步骤2给出的范围大小,设置另一个初始为空的“鸽子洞”的辅助列表
  • 访问输入列表的每个元素,并将其放在第二个列表的鸽子洞中。输入列表arr[i]的元素被放入索引a[i]-min的次列表的鸽子洞中
  • 按顺序(从第一个元素到最后一个元素)迭代次/鸽子洞列表,并将非空鸽子洞中的元素放回输入列表
  • 有关前面描述的步骤的图形说明,请观看


    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来了解这一点