数据结构与算法(一)

141 阅读1分钟

什么是数据结构?

数据结构是指计算机存储、组织数据的方式(栈、队列、链表...)

什么是算法?

算法是指解决问题的一系列清晰步骤或指令

数据结构与算法有何关系?

  • 数据结构是为算法提供服务的
  • 算法是围绕着数据结构进行操作
  • 程序 = 数据结构 + 算法

衡量算法好坏的标准是什么?

时间复杂度

  • 时间复杂度是定性描述算法运行时间的大概趋势,用函数表示(大 O 表示法),如O(1)、O(n)、O(log⁡N)等

  • 常见的时间复杂度

    image.png

    O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(2^n) < O(n!)

  • 示例

// O(1)
let i=0;
i++;

// O(logn)
while(i<n) {
    console.log(i)
    i*=2
}

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

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

空间复杂度

  • 空间复杂度是衡量算法在运行过程中临时占用存储空间的大小,通常也是用大 O 表示,如O(1)、O(n)、O(log⁡N)等
  • 算法占用的存储空间越小,则性能越好
  • 示例
// O(1) -- 占用 1 个内存单元
let i=0;
i++;

// O(n) -- 占用 n 个内存单元
const arr = []
for(let i=0; i<n; i++) {
    arr.push(i)
}

// O(n^2) -- 占用 n * n 个内存单元
const matrix = []
for(let i=0; i<n; i++) {
    matrix.push([])
    for(let j=0; j<n; j++) {
        matrix[i].push(j)
    }
}