我很难找到以下陈述的证据。证明没有基于比较的算法接收n个大小的数组并发出相同元素的数组,其中索引中的所有元素除以3现在在线性时间内以这些索引的排序形式出现。
例如阵列:8 6 1 3 0 9 4
执行算法后,阵列将如下所示:3 6 1 4 0 9 8
最初元素8,3,4出现在数组中,索引是3的乘法,在执行算法后,它们仍然会出现在3的乘法索引中,但这次它们将以排序的形式出现在这种情况下3,4,8。
我需要证明这种算法不存在。我试着假设这句话是正确的,所以在某些时候我会得到矛盾,但它不适合我。谢谢你的帮助。
答案 0 :(得分:1)
有两个论证证明这样的算法不存在。首先,正如评论中所指出的,如果确实存在这样的算法,那么您可以执行以下操作:
前三个步骤中的每一个都将在O(n / 3)时间内运行,最后一个步骤将在O(n)时间内运行。那会给你一个O(n)比较排序算法。但比较排序被证明是O(n log n)。
第二个参数是给定一个n项的数组,你想在O(n)时间内排序n / 3项。如上所述,比较排序是O(n log n)。因此,排序n / 3项将是O((n / 3)* log(n / 3))。因此,为了在O(n)时间内对那些n / 3项进行排序,log(n/3)
必须小于3. 8的基数2对数等于3.因此,如果n> 24,然后排序n / 3项将花费超过O(n)的比较。