Skip to content

算法首页

本人功力尚浅,如果有理解错误请见谅。😬😬😬

这个专栏主要介绍记录的是我学习算法的过程,并不一定适合所有人,也不一定描述得正确。最主要是用于我个人的学习笔记,方便日后回顾。🤨🤨🤨

(主要的语言是 Javascript

算法:是一组完成任务的指令。是如何快速达到目标的一组方法。

时间复杂度

时间复杂度:是一个函数,它定性描述该算法的运行时间,即运行这一算法所需的时间或操作数。通常使用大O表示法表示最糟糕的情形。

详细解析 一般情况下,算法中基本操作重复执行的次数是问题规模 n 的某个函数,用T(n)表示,也称为时间频度,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。

步骤

  1. 找出算法中的基本语句。(通常是指算法中执行次数最多的语句)
  2. 计算基本语句的执行次数的数量级。
  3. 用大Ο记号表示算法的时间性能。

💡

javascript
let sum = 0 // 1次
for (let i = 0; i < n; i++) { // n次
  for (let j = 0; j < n; j++) { // n^2次
    sum ++ // n^2次
  }
}

// 因此有 O(2n^2+n+1),去除低阶、常数、高阶常参,等到 T(n)=O(n^2).
// 也可以理解为当 n 趋于无穷时,常数的影响已经几乎可以不计。
  • 常见的大O运行时间(从快到慢):
    • O(log n) 对数时间
    • O(n) 线性时间
    • O(n * log n)
    • O(n ^2)
    • O(n!)

空间复杂度:对一个算法在运行过程中临时占用存储空间大小的量度,即算法所耗掉的存储空间。

Released under the MIT License.