【问题标题】:Manual sort, 2 by 2?手动排序,2×2?
【发布时间】:2022-01-13 17:59:13
【问题描述】:

愚蠢的提问时间:

有一种主要是手动排序算法,您可以一次比较列表 2 中的项目,然后从每对中选择哪个更重要。甲,还是乙?甲,还是乙?现在,这可以在不达到大 O(n!) 的情况下完成,如果我没记错的话,实际上更接近或小于 O(2n)。不,我不是在谈论红/黑或二进制搜索或排序。在我的一生中,我不记得这个过程叫什么,也不记得要编码的确切算法。

它通常用于对主观列表项进行排序。例如:

  • 按照从最重要到最不重要的顺序排列您的核心价值观
  • 按从最重要到最不重要的顺序排列找房子的要点

例子(哪个更重要):

  • 3 间卧室或开放式概念
  • 厨师厨房或大储藏室
  • 大储藏室或 3 间卧室

从长远来看,我可以解决这个问题。我实际上在几年前和几年前做过一次。我的时间很紧,本周还有 3 段代码要完成。任何帮助表示赞赏!

这种类型的名称是什么? 算法是什么?

【问题讨论】:

  • 你不是在说weighted sort吗?
  • 你所描述的“加权”原则比较听起来像Prim's Algorithm

标签: arrays sorting


【解决方案1】:

如果您所说的只是对列表进行排序,那么任何主要的排序算法都符合您的标准。并且可以证明它并不比 O(n log n) 好。所有大的(冒泡排序、插入排序、堆排序、快速排序、斐波那契排序等)都具有选择两个元素并比较它们的特性。事实上,这很常见,以至于我们通常会关注该规则的例外情况(例如基数排序)。

但是,您的描述听起来不像是对列表进行排序,而更像是Pairwise comparison。这有很多变种。例如,有些会保证完整的订购。其他人将处理改变主意的用户,产生不可传递的订单。一些支持测量结果的统计显着性。这完全取决于您在寻找什么。

【讨论】:

  • 成对是我一直在寻找的主要内容。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 2021-10-15
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
相关资源
最近更新 更多