正如标题所说,基数排序是唯一的非比较排序算法吗?我的猜测是肯定的。
问问题
6139 次
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 回答