【问题标题】:Is radix sort the only non-comparison sorting algorithm?基数排序是唯一的非比较排序算法吗?
【发布时间】:2011-05-12 20:22:22
【问题描述】:

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

【问题讨论】:

  • 你说的非比较是什么意思?各种都必须比较 something,除非你每个桶的物品不超过一件。
  • @Loadmaster:这个名字有点误导——它的意思是一种不会原子地比较元素的排序。
  • 意大利面条排序(如果有合适的硬件)...
  • 我认为睡眠排序也被认为是非比较的......

标签: algorithm sorting radix-sort radix


【解决方案1】:

不 - 除其他外,还有计数排序和桶排序。查看Wikipedia article 了解更多信息。

【讨论】:

    【解决方案2】:

    任何集合都可以不使用比较进行排序。

    过程是

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

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

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

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

    计数排序只使用第一步

    桶排序通常是指计数排序和比较排序的混合。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多