美文网首页算法
算法相关定义

算法相关定义

作者: 羽晞yose | 来源:发表于2021-02-27 22:23 被阅读0次

算法

  • 解决一类问题
  • 具体
  • 明确没有歧义

学算法的意义:

  • 写好程序提高效率
  • 开拓视野增加面试通过率
  • 数据可视化、VR、游戏、、AI和现在不知道的Anything

数量级、输入、输出

数量级

其实就是描述多少个零

1.5 * 10:数量级为3,【千】级
淘宝2017年双十一订单量8.12亿:订单数为【亿】级
知乎用户数突破1.6亿:用户数为【亿】级
阿里市值4687亿美金,百度820亿美金:阿里市值领先百度1个数量级
北京人口总数2100万,长沙人口总数791完:北京人口总数比长沙大1个数量级
宇宙中有20万亿亿 - 40万亿亿颗恒星:宇宙恒星数量级为22
Apple市值10047亿美金:苹果市值到达T级

总结:
具体的数组用来记录客观世界
模糊的数字用来理解客观世界

输入和输出
function sum(a) {
    return a.reduce((x, y) => x +y, 0)
}

输入:数组
输出:数字
输入规模:a.length
算法是输入到输出的映射

输入规模

统计淘宝2017年双十一交易额 -> 加和8.12亿订单 -> 统计算法支持【十亿】级的输入

算法设计的客观条件
  • 淘宝统计订单的算法应该支持【十亿】级数据,在【毫秒】级时间内完成计算
  • 知乎统计用户肖像的算法应该支持【亿】级数据,在【小时】级时间内完成一次统计
  • React的VirtualDom应该支持【万】级数据,在【毫秒级】时间内完成一次计算

计算能力的变革

从ENIAC到骁龙CPU,人类的计算能力增长了至少【10万】级倍数(晶体二极管已经塞不进cpu中了,因此2.8G/HZ已经成为时代瓶颈)

一个hadoop分布式集群动辄有数千台机器,【万】级cpu核心,利用分布式算法计算能力达到智能手机的【万】级倍数

量子计算机:50量子比特的量子计算机每秒可以处理1125亿亿次计算。是大数据集群的【亿】级倍数

CPU、寄存器和内存

短期记忆(很少的事情) -> 寄存器(Register)
推理计算 -> 算数逻辑单元(ALU)
长期记忆(很多事情) -> 随机存储器(RAM)
其他:缓存等

时间复杂度

  • 一个函数,用大写O表示,比如O(1)、O(n)、O(logN)……
  • 定性描述算法的运行时间

O(1)

let i = 0
i += 1

O(n)

for (let i = 0; i < n; i+=1) {
    console.log(i)
}

O(1) + O(n) = O(n)
时间复杂度相加,结果为复杂度高的。因为但n无限大时,O(1)基本可以忽略不计

let i = 0
i += 1
for (let j = 0; j < n; j+=1) {
    console.log(j)
}

O(n) * O(n) = O(n^2)

for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
        console.log(i, j)
    }
}

O(logN)

let i = 1
while (i < n) {
    console.log(i)
    i *= 2
}

空间复杂度

  • 一个函数,用大写O表示,比如O(1)、O(n)、O(n^2)……
  • 算法在运行过程中临时占用存储空间大小的量度
    O(1)
let i = 0
i += 1

O(n)

const list = []
for (let i = 0; i < n; i+=1) {
    list.push(i)
}

O(n^2)
时间复杂度相加,结果为复杂度高的。因为但n无限大时,O(1)基本可以忽略不计

const matrix = []
for (let i = 0; i < n; i++) {
    matrix.push([])
    for (let j = 0; j < n; j++) {
        matrix[i].push(j)
    }
}

相关文章

网友评论

    本文标题:算法相关定义

    本文链接:https://www.haomeiwen.com/subject/cwcwfltx.html