概念
数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合用计算机存储、组织数据的方式。数据结构分别为逻辑结构、(存储)物理结构和数据的运算三个部分。
常见的数据结构:
算法(Algorithm):对特定问题求解步骤的一种描述,是旨在解决特定问题的有限指令序列。
算法的5个特性:
有穷性,是指算法在执行有限的步骤之后,自动结束而不是出现无限循环,并且每一个步骤在可接受的时间内完成。
确定性,是指算法执行的每一步骤在一定条件下只有一条执行路径,也就是相同输入只能有一个唯一的输出结果。
可行性,是指算法每一步骤都必须可行,能够通过有限的执行次数完成。
输入,是指算法具有零个或多个输入。
输出,是指算法至少有一个或多个输出。
算法两个主要方面:
正确:算法功能与问题要求一致?
成本:运行时间 + 所需存储空间 =》 如何度量? + 如何比较?
算法复杂度分析的动机
如何度量:
设计的这个算法如何?跑得是不是足够快?
随着问题规模的增长会怎样变化了?
如何比较?
同一个问题有多种不同的算法,如何判断其优劣了?
时间复杂度:评估执行程序所需的时间。可以估算出程序对处理器的使用程度。
空间复杂度:评估执行程序所需的存储空间。可以估算出程序对计算机内存的使用程度。
一般情况下,随着规模n的增大,次数T(n)的增长较慢的算法为最优算法。常见时间复杂度从小到大依次排列:O(1) < O(log2n) < O(n) < O(n²)<O(n³) ····<O(n!)
算法与数据结构的关系: 数据结构 + 算法 = 程序 ;数据结构是算法的基石 ;算法围绕数据结构进行操作。
最常用的数据结构和算法:
https://www.runoob.com/w3cnote_genre/algorithm
https://www.runoob.com/w3cnote/ten-sorting-algorithm.html