时间复杂度
===
回顾我们上个题目
~~~
// 已知a+b+c=1000,且a^2+b^2=c^2,却1000内所有a,b,c
func TestDemo1(t *testing.T) {
// 外层循环遍历A
for a:=0;a<1001;a++ {
// 循化得到B 此时时间复杂度为n^2
for b:=0;b<1001;b++ {
// 时间复杂度n^3
for c:=0;c<1001;c++ {
if a + b + c == 1000 && a*a+b*b == c*c {
t.Logf("找到一个:a:%d ,b:%d ,c:%d\n",a,b,c)
}
}
}
}
}
func TestDemo2(t *testing.T) {
for a:=0;a<1001;a++{
for b:=0;b<1001;b++{
c := 1000-b-a
if a*a+b*b == c*c{
t.Logf("找到一个:a:%d ,b:%d ,c:%d\n",a,b,c)
}
}
}
}
~~~
demo1是三个循环 执行次数就是n^3
demo2是两个循化 执行次数是n^2
三个例子是1000不是台明显,现在我们吧1000改为3k
![](https://box.kancloud.cn/65851243c6bf3c1b42f09509332a55af_829x831.png)
现在是不是差别非常明显阿!
我们对算法评判考虑代码的次数 忽略参数量
这个就是时间复杂度了
> 时间复杂度:
> 我们吧将算法执行运算的操作数丢弃低阶项,在去除所有系数
> 在他前面加一个O,就是大O表示法
![](https://box.kancloud.cn/c98e46db4305362dc74eb5353dc2262c_544x292.png)
![](https://box.kancloud.cn/ddc83fc8c115b7a0c8da9d451d437f87_1099x521.png)