Tiven

Tiven

博观而约取,厚积而薄发

天问的个人网站(天问博客),专注于Node.js、Vue.js、React、Vite、Npm、Nginx等大前端技术。不断学习新技术,记录日常开发问题,持续分享coding,极客开源,共同进步。生命不息,奋斗不止... [ hexo blog ]

【数据结构与算法】(1):什么是算法复杂度


每种编程语言都有自己独特的语法,但是相对于计算机来说,数据结构和算法是通用的。什么是复杂度?时间复杂度和空间复杂度又是如何的定义的?本文就简单讲一讲。

数据结构与算法 · 复杂度

一、什么是复杂度?

  • 程序执行时需要的计算量和内存空间(和代码是否简洁无关)
  • 复杂度是 数量级 (方便记忆、推广),不是具体的数字
  • 一般针对一个具体的算法,而非一个完整的系统

二、时间复杂度

时间复杂度: 程序执行时需要的计算量(CPU)

  • O(1)一次就够(数量级 )
  • O(n)和传输的数据量一样(数量级)
  • O(n^2)数据量的平方(数量级)
  • O(logn)数据量的对数(数量级)
  • O(n*logn)数据量*数据量的对数(数量级)

时间复杂度

三、空间复杂度

空间复杂度: 程序执行时需要的内存空间

  • O(1)有限的可数的空间(数量级)
  • O(n)和输入的数据量相同的空间(数量级)

四、现状

前端开发:重时间、轻空间 <br>


《数据结构与算法》系列

  1. 什么是算法复杂度
  2. 堆(heap)、栈(stack)、队列(queue)
  3. 把一个数组旋转k步
  4. 判断字符串是否括号匹配
  5. 数组、栈、链表、队列结构与对比
  6. 用两个栈实现一个队列
  7. 反转单向链表
  8. 用链表实现队列
  9. 二分查找
  10. 查找两数之和

欢迎访问:天问博客