入门基础

Siona

入门基础

算法与数据结构基础知识

算法的特性

  • 五个特征:有穷性、确定性、可行性、有输入、有输出
  • 设计原则:正确性、可读性、健壮性(代码 bug 少,且系统比较稳定)
  • 高效率与低存储:内存+CPU 堆栈内存 OOM
  • 好的算法:内存占用最小,CPU 占用最小,运算速度最快。
  • 评价算法的两个重要指标:
    • 时间复杂度:运行一个程序所花费的时间。O()
    • 空间复杂度:运行程序所需要的内存 OOM

时间复杂度

时间复杂度计算的意义:

怎么测试接口的性能?—— 压测、冒烟。依赖测试环境,流程很长,导致规模或数据不准确。

如何表示?

表示方法:大 O 表示法。 O(1) > O(logn) > O(n) > O(nlogn) > O(n^2) > O(n^x)

如何分析?

  • 找 for、while 递归。且要找循环量最大的那一段。
  • 同级循环怎么计算?

几种常见的时间复杂度分析【指的是某一段代码】

计算时间复杂度往往是计算比较大的,而且是不确定的数。如果已经确定了,那么就不用计算了,也就是我们说的常量。

  • 常数:O(1)。1 是常数,所有能确定的数字都用 O(1) 表示,O(1000) => O(1)
  • 对数:O(logn)O(nlogn)
  • 线性:O(n)
  • 线性对数:O(nlogn)
  • 平方:O(n^2)
  • n 次方:O(n^n)
时间复杂度对比.png
时间复杂度对比.png

如何找时间复杂度?

  • 找到有循环的地方;
  • 找有网络请求(RPC、远程调用、分布式、数据库请求)的地方;
  • 测试时间:log 打印,计算平均时间。

空间复杂度

数据结构与算法的重要性

算法思维如何培养以及学习

Last Updated 3/2/2024, 4:00:59 PM