时间复杂度双变量单循环



下面代码的时间复杂度是多少?为什么?

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++)
{

最新更新