这种循环的复杂性是什么?

时间:2019-04-03 00:53:04

标签: java arrays algorithm time-complexity complexity-theory

能否请您说明我在每一步中遍历数组中“未访问”项的以下代码的复杂性是什么?

final int[] arr = {...};
for (int i = 0, length = arr.length; i < length; i++) {
    System.out.print(arr[i]);
    for (int j = i + 1; j < length; j++) {
        System.out.print(arr[j]);
    }
}

我打赌它是O(NlogN)O(N√N),其中Narr.length

我是对的吗?你能告诉我为什么吗?

我认为它是O(NlogN)O(N√N),因为每一步的“未访问”部分都会减少,因此小于O(N^2)但仍大于O(N)

1 个答案:

答案 0 :(得分:3)

我认为您的例程打印如下:

arr[0] arr[1] arr[2] ... arr[n]
arr[1] arr[2] arr[3] ... arr[n]
...
arr[n]

如果每个步骤的计算是印刷,那么我会说复杂度为O(n^2)。因为所有打印的数量是(length+1)*length/2