具有两个变量的时间复杂度单循环
Time complexity single loop with two variables
下面代码的时间复杂度是多少?为什么?
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
。就时间复杂度而言,变量的数量无关紧要。 (也有 space 复杂性)但是要小心,
for (int i = 0, j = n; i < n; i++, j++)
完全不同于
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
下面代码的时间复杂度是多少?为什么?
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
。就时间复杂度而言,变量的数量无关紧要。 (也有 space 复杂性)但是要小心,
for (int i = 0, j = n; i < n; i++, j++)
完全不同于
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{