一个通过每一个项目比较它的邻居作为排序-Item列表可以验证。在我的应用程序中,我将无法将每个项目与其相邻项目进行比较:相反,有时会在遥远的元素之间进行比较。鉴于列表包含三个以上的项目,并且比较是唯一受支持的操作,因此是否存在一个比较“网络”,以证明列表已排序,但至少缺少一个直接的邻居比较?
形式上,对于元素的序列,我有一组索引对对于这些索引,我知道,还是。存在一对,这对比较集中缺少该对。那么,是否有可能证明序列已排序?
1
一个注释,以防万一以后有人找到此页面,并询问您是否可以验证列表是否排序而不进行任何比较;仅当您可以对输入进行一些限制和/或对输入的形状有所了解时;(例如基数排序)。
—
HammerN'Songs,
但是,可以在未排序的情况下优化比较次数。
—
累计
@累积实际上有这种可能性吗?采取任何此类程序并编制一份长度为n的对抗列表,以迫使该程序进行n-1比较,应该是微不足道的。另请参阅QuickSort的杀手级对手,它进一步推动了将快速排序纳入其渐近分析的不良部分的想法。
—
丹尼尔·瓦格纳
@DanielWagner是的,必须针对特定应用程序的预期输入进行这种优化。
—
累积
可能不可能。但是请澄清一下:您是说只知道形式(j,j + 1)的比较,而不是一般形式(j,k)的比较吗?例如,您是否知道两个索引(j,j + 3)的比较?
—
罗恩