【发布时间】:2022-11-12 08:43:12
【问题描述】:
例如,我已经对数组 [1、2、3、4、5、6] 进行了排序。在用户移动一些元素之后,例如这里是 6,我有一个数组 [1, 2, 3, 6, 4, 5]。如何找出哪个元素被移动了。我需要它的索引。
检查每对元素是否相等的简单枚举是我的低效解决方案。
【问题讨论】:
-
moving operation是什么?值得明确定义。 -
为什么您认为您的解决方案效率低下?
-
当我们有 [1,3,2,4,5,6] 时,您认为哪个元素被移动了? 2 还是 3?请显示您的代码以及您遇到的效率问题。
-
我很确定最坏情况下的复杂度不会低于 O(n)。考虑找到交换的两个元素
-
对于由连续整数组成的整数数组的特殊情况,二进制搜索方法可能会起作用。对于更任意的排序列表,我认为@Marat 是正确的,你不会比线性列表做得更好。