Java 任意数组的运算和时间复杂度
假设给定一个长度为n的任意数组。在最坏的情况下,您可以在阵列上执行以下哪项操作 A.移除第i个元素,将大小减小1Java 任意数组的运算和时间复杂度,java,arrays,algorithm,Java,Arrays,Algorithm,假设给定一个长度为n的任意数组。在最坏的情况下,您可以在阵列上执行以下哪项操作 A.移除第i个元素,将大小减小1 B.在第i个位置插入一个元素,将大小增加1 C.找到最大元素 D.交换位置i和j处的元件 在这个问题上,我不确定任意数组的定义。看起来D是正确的,但我不确定。有人能解释一下吗?非常感谢 我认为,通过武断,可能只是意味着数组的值无关紧要 A) 删除第i个元素并将数组的大小减少1具有O(n)复杂性:删除第i个元素时,必须将所有其他元素下移一个索引。如果删除了第0个元素,则需要将n-1个元
B.在第i个位置插入一个元素,将大小增加1
C.找到最大元素
D.交换位置i和j处的元件
在这个问题上,我不确定任意数组的定义。看起来D是正确的,但我不确定。有人能解释一下吗?非常感谢 我认为,通过武断,可能只是意味着数组的值无关紧要 A) 删除第i个元素并将数组的大小减少1具有O(n)复杂性:删除第i个元素时,必须将所有其他元素下移一个索引。如果删除了第0个元素,则需要将n-1个元素向下移动一个索引 B) 出于类似的原因,在第i个位置插入元素并将数组的大小增加1具有O(n)复杂性。如果我将一个元素添加到数组的开头,我需要将所有其他元素向上移动一个。更不用说,因为数组的大小是固定的,所以我还需要创建一个新数组并复制以前的元素 C) 找到最大元素至少需要O(n)次。您需要查看每个元素以找到最大值,对吗?如果最大值位于数组末尾的位置n,则需要遍历到该点的所有值 D) 交换元素只是O(1)。这是一个常量操作,不需要for或while循环之类的
差不多吧。希望有帮助 这看起来像是一个家庭作业问题,在这种情况下,你应该问你的老师“任意排列”是什么意思:不受限制地服从个人意愿或判断;完全取决于一个人的判断——因此,任何数组,无论类型、大小和实际值如何,除了你知道大小是
n
,但值是n
,都是任意的。我投票结束这个问题,因为问英语单词定义的问题不是一个问题。