下面代码的时间复杂度是多少?为什么?
public static int[] Shuffle(int[] nums, int n)
{
int len = nums.Length;
int[] final = new int[2 * n];
int counter = 0;
for (int i = 0, j = n; i < n; i++, j++)
{
final[counter++] = nums[i];
final[counter++] = nums[j];
}
return final;
}
如果我们有如下的两个循环,那么它将被认为是时间复杂度为O(n^2)
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
}
}
复杂性是O (n)因为游标从i = 0
循环到i = n-1
。当涉及到时间复杂度时,变量的数量并不重要。(也有空间复杂性)然而,
for (int i = 0, j = n; i < n; i++, j++)
与
完全不同for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{