if语句的执行时间是多少?

时间:2018-03-27 15:53:55

标签: c# time-complexity

此代码中if语句的T(n)是什么

panic: runtime error: invalid memory address or nil pointer dereference [recover
ed]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x1 addr=0x8 pc=0x4977aa]

goroutine 1 [running]:
fmt.errorHandler(0xc04206be40)
        C:/development/Programming Languages/GO/src/fmt/scan.go:1031 +0x14f
panic(0x4b15a0, 0x544720)
        C:/development/Programming Languages/GO/src/runtime/panic.go:505 +0x237
fmt.(*ss).scanOne(0xc042044060, 0x76, 0x4a6460, 0x0)
        C:/development/Programming Languages/GO/src/fmt/scan.go:979 +0xc7a
fmt.(*ss).doScan(0xc042044060, 0xc04206bf48, 0x1, 0x1, 0x0, 0x0, 0x0)
        C:/development/Programming Languages/GO/src/fmt/scan.go:1040 +0x9d
fmt.Fscan(0x4de080, 0xc042004010, 0xc04206bf48, 0x1, 0x1, 0x0, 0x10, 0x4b36c0)
        C:/development/Programming Languages/GO/src/fmt/scan.go:123 +0xd2
main.main()
        C:/Users/Hamed/Documents/Go Projects/src/golang/learning/helloworld/firs
tApp.go:22 +0xe3

我认为if本身会被执行n次,但我们的老师说n ^ 2我不明白为什么?

1 个答案:

答案 0 :(得分:1)

O(1)。

if本身在恒定时间内执行。 if内的条件可能有任何时间复杂性,因此您需要注意它。

样本的更新版本显示int[] v作为序列的数据,这意味着对i元素的访问是O(1),min的总时间是O(n),如预期的那样该方法的标准实施。

请注意,如果不知道代码中使用了哪些数据结构,则无法提供正确的估计值。可以猜测原始示例代码中的y是标准数组,但可能不是您正在使用的算法的情况。例如,如果您使用链表作为索引结构的数据存储(即您已将IList<...>实现为链接的节点列表),那么即使通常为x,对i元素的访问也将为O(n)对于数组,[i]将是O(1)。