📅  最后修改于: 2023-12-03 15:39:55.427000             🧑  作者: Mango
以下是 UGC NET CS 2017 年 1 月至 2 日考试的问题 23:
a) O(1)
b) O(n)
c) O(n^2)
d) O(log n)
e) O(n log n)
给定以下代码片段:
for i in range(n):
for j in range(n):
if i+j == n:
break
以上代码片段的时间复杂度为?
A) O(1) B) O(n) C) O(n^2) D) O(log n) E) O(n log n)
请选出正确的答案。
以上代码中包含两个嵌套循环,每个循环的长度均为 $n$。若 $i+j=n$,则执行 break
关键字,跳出内层循环。因为 $i$ 和 $j$ 的取值范围是 0 到 $n-1$,因此当 $i+j=n$ 时,内层循环最多执行 $n$ 次。
内层循环最多执行 $n$ 次,外层循环执行 $n$ 次。因此,总时间复杂度为 $O(n^2)$。选项 C 符合题意。
以上是 UGC NET CS 2017 年 1 月至 2 日考试问题 23 的解析。这道题目考察的是时间复杂度的基础知识,即对于嵌套循环的时间复杂度该如何计算。这是程序员基础中的基础,也是职业生涯中经常用到的知识点。掌握好时间复杂度的计算方法,可以帮助程序员更好地理解算法的性能,从而编写高效的代码。
# 代码片段
for i in range(n):
for j in range(n):
if i+j == n:
break
以上代码片段的时间复杂度为 $O(n^2)$。