笔记(2)[算法]

数据结构与算法的关系

两种算法的比较

计算1-100的结果程序

# 计算0-100的和
sum = 0
for i in range(101):
    sum += i

print(sum)
python实现0-100
package main

import "fmt"

func main() {
    sum := 0
    for i :=0; i < 101; i++ {
        sum += i
    }
    fmt.Println(sum)
}
go实现0-100

但是!!!18世纪的天才高斯小学就想出来了好办法

n = 100
sum = (1+n) * n / 2
print(sum)

 算法时间复杂度

算法时间复杂度定义

  在进行算法分析时, 语句的总的执行次数T(n)是关于问题规模n的函数, 进而分析T(n)随着n的变化情况并确定T(n)的数量级. 算法的时间复杂度, 也就是算法的时间量度, 记作: T(n) = O(f(n)). 它表示随问题规模n的增大, 算法执行时间的增长率和f(n)的增长率相同, 称作算法的渐进时间复杂度, 简称为时间复杂度度.其中f(n)是问题规模n的某个函数.

用O()来体现算法时间复杂度的记法.

一般情况下,随着 n 的增大, T(n)增长最慢的算法为最优算法。

O(1) 叫常数阶, O(n) 线性阶(循环中有常数阶), O(n^2) 平方阶(嵌套循环).

对数阶

count = 1
whild count < n:
    count *= 2

O(logn)

算法的空间复杂度

算法的空间复杂度通过计算算法所需要的存储空间实现, 算法空间复杂的计算公式记作: S(n) = O(f(n)), 其中, n为问题的规模, f(n)为语句关于n所占存储空间的函数

 

posted @ 2018-11-08 19:11  猴里吧唧  阅读(96)  评论(0)    收藏  举报