数据结构与算法

算法简介

算法复杂度

极客时间 | 数据结构与算法之美

时间复杂度

算法的时间复杂度,是指执行算法所需要的计算工作量

时间复杂度的计算

算术指令(加减乘除、取余、向上向下取整)、数据移动指令(装载、存储、赋值)、控制指令(条件或无条件跳转,子程序调用和返回)。
不能通过绝对时间来计算算法复杂度。需要根据算术指令。一般通过大O表示法。
O(1) > O(log(n))> O(√n) > O(n) > O(nlog(n)) > O(n2) > O(en) >O(n!)
N与运行时间的关系

N与运行时间的关系

空间复杂度

算法的空间复杂度,是指算法需要消耗的内存空间。有时候做递归调用,还需要考虑调用栈所占用的空间。

算法分类

http://image.clickear.top/20211230160043.png

按照应用的目的来划分

搜索算法、排序算法、字符串算法、图算法、最优化算法、数学(数论)算法

按照具体实现的策略划分

暴力法、增量法、分治法贪心算法动态规划法回溯法分支限界法

经典算法

  • 二分查找
  • 快速排序、归并排序
  • KMP算法
  • 快慢指针(双指针法)
  • 普利姆(Prim)和 克鲁斯卡尔(Kruskal)算法
  • 迪克斯特拉(Dijkstra)算法
  • 其它优化算法:模拟退火、蚁群、遗传算法

排序算法

课件

算法基础.pptx大厂学院算法与数据结构解析课程大纲.docx大厂算法和数据结构解析(上).docx大厂算法和数据结构解析(中).docx大厂算法和数据结构解析(下).docx

书籍推荐

  • 《大话数据结构》(推荐,豆瓣评分 7.9 , 1K+人评价):入门类型的书籍,读起来比较浅显易懂,适合没有数据结构基础或者说数据结构没学好的小伙伴用来入门数据结构。
  • 《数据结构与算法分析:C 语言描述》(推荐,豆瓣评分 8.9,1.6K+人评价):本书是《Data Structures and Algorithm Analysis in C》一书第 2 版的简体中译本。原书曾被评为 20 世纪顶尖的 30 部计算机著作之一,作者 Mark Allen Weiss 在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好评.已被世界 500 余所大学用作教材。
  • 《算法图解》(推荐,豆瓣评分 8.4,0.6K+人评价):入门类型的书籍,读起来比较浅显易懂,适合没有算法基础或者说算法没学好的小伙伴用来入门。示例丰富,图文并茂,以让人容易理解的方式阐释了算法.读起来比较快,内容不枯燥!
  • 《算法 第四版》(推荐,豆瓣评分 9.3,0.4K+人评价):Java 语言描述,算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。书的内容非常多,可以说是 Java 程序员的必备书籍之一了。