for (int i=0; i<=N-1; ++i) {
for (int j=i+1; j<=N; ++j) {
SOME O(1) code;
}
}
我认为这段代码是O(nlogn)时间复杂度,但我的朋友说这是O(n ^ 2)时间复杂度。哪一个是对的?我正在努力解决这个问题......
答案 0 :(得分:3)
像这样理解:
当i = 0时,j将从1运行到N = N次
当i = 1时,j将从2运行到N = N-1次
.......
当i = N-1时,j将运行N = 1时间
因此,复杂度= 1 + 2 + 3 + .... + N = N *(N + 1)/ 2 =((N ^ 2)+ N)/ 2
如您所见,这是n ^ 2的顺序。