4

正如标题所说,基数排序是唯一的非比较排序算法吗?我的猜测是肯定的。

4

2 回答 2

6

不 - 除其他外,还有计数排序和桶排序。查看维基百科文章了解更多信息。

于 2011-05-12T20:26:56.820 回答
1

任何集合都可以通过不使用比较来排序。

过程是

  • 决定输入域 M 的可管理大小,您可以处理以将其记录在可管理的数组中。对于字符(8 位),域为 0-255。
  • 以某种有序的方式将输入拆分到数组中。
  • 如果仍未完全考虑输入,即未考虑 M 中的所有位,则重复并冲洗。

例如,一个 32 位 M 整数排序可以执行为:

  • 查看前 8 位,将(引用、指针或您的语言可用的内容)放入 8 位范围内。把它们放在一个数组 [0-255] 中,现在你的值有了一个粗略的(粗略)排序。
  • 查看接下来的 8 位,将它们放在类似的数组中,保留对第一个排序的引用。接下来的 8x2 位以相同的方式处理。要提取您遵循第一组的链接。

基数排序使用数字并有 2 个变体,(MSB 到 LSB)和(LSB 到 MSB)。

计数排序仅使用第一步

当提到计数和比较排序的混合时,通常会提到桶排序。

有趣的是,对于相当多的用例,比较排序很短。

于 2011-05-12T20:52:43.213 回答