是否可以在不比较邻居的情况下验证列表的排序?


14

一个ñ通过每一个项目比较它的邻居作为排序-Item列表可以验证。在我的应用程序中,我将无法将每个项目与其相邻项目进行比较:相反,有时会在遥远的元素之间进行比较。鉴于列表包含三个以上的项目,并且比较是唯一受支持的操作,因此是否存在一个比较“网络”,以证明列表已排序,但至少缺少一个直接的邻居比较?

形式上,对于元素Ë一世的序列,我有一组索引对Ĵķ对于这些索引,我知道ËĴ>ËķËĴ=Ëķ还是ËĴ<Ëķ。存在一对+1个,这对比较集中缺少该对。那么,是否有可能证明序列已排序?


1
一个注释,以防万一以后有人找到此页面,并询问您是否可以验证列表是否排序而不进行任何比较;仅当您可以对输入进行一些限制和/或对输入的形状有所了解时;(例如基数排序)。
HammerN'Songs,

但是,可以在排序的情况下优化比较次数。
累计

1
@累积实际上有这种可能性吗?采取任何此类程序并编制一份长度为n的对抗列表,以迫使该程序进行n-1比较,应该是微不足道的。另请参阅QuickSort的杀手级对手,它进一步推动了将快速排序纳入其渐近分析的不良部分的想法。
丹尼尔·瓦格纳

@DanielWagner是的,必须针对特定应用程序的预期输入进行这种优化。
累积

可能不可能。但是请澄清一下:您是说只知道形式(j,j + 1)的比较,而不是一般形式(j,k)的比较吗?例如,您是否知道两个索引(j,j + 3)的比较?
罗恩

Answers:


34

一世一世+1个

1个2一世-1个一世一世+1个一世+2ñ1个2一世-1个一世+1个一世一世+2ñ

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.