📌  相关文章
📜  教资会网络 | UGC NET CS 2017 年 1 月至 2 日 |问题 23(1)

📅  最后修改于: 2023-12-03 15:39:55.427000             🧑  作者: Mango

程序员必看:UGC NET CS 2017 年 1 月至 2 日考试问题 23

问题描述

以下是 UGC NET CS 2017 年 1 月至 2 日考试的问题 23:

  1. 已知一下操作的时间复杂度:
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)$。