此代码中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我不明白为什么?
答案 0 :(得分:1)
O(1)。
if
本身在恒定时间内执行。 if
内的条件可能有任何时间复杂性,因此您需要注意它。
样本的更新版本显示int[] v
作为序列的数据,这意味着对i
元素的访问是O(1),min
的总时间是O(n),如预期的那样该方法的标准实施。
请注意,如果不知道代码中使用了哪些数据结构,则无法提供正确的估计值。可以猜测原始示例代码中的y
是标准数组,但可能不是您正在使用的算法的情况。例如,如果您使用链表作为索引结构的数据存储(即您已将IList<...>
实现为链接的节点列表),那么即使通常为x,对i
元素的访问也将为O(n)对于数组,[i]将是O(1)。