目录
逻辑结构-数据元素之间的逻辑关系-抽象的(集合结构、线性结构、树形结构、图形结构)
存储结构-数据结构在计算机中的表示-具体的(顺序存储、链式存储、索引存储、散列存储)
顺序存储:
数组就是顺序存储
优点:
1、可以实现随机存取
2、每个元素占用最少的空间
缺点:
只能使用整块的存储单元,会产出较多的碎片
链式存储:
结构体的一部分储存数据,另一部分储存下一个数据的地址
优点:充分利用所有存储单元,不会出现碎片现象
缺点:
1、需要额外的存储空间用来存放下一结点的指针
2、只能实现顺序存取
算法:
定义:对特定问题求解步骤的描述
特点:有穷、确定、可行、输入、输出
时间复杂度:
同一个算法在不同的硬件机器上执行的时间差别是很大的,所以不能用时间对衡量,可以用运行次数去表示时间复杂度,因为时间和运行次数是正相关的。
思考:如果一个算法的执行次数为3n^2+5n,那么该算法的时间复杂度为多少?
时间复杂度是要忽略高阶项系数和低阶项的,所以答案是O(n^3)。
空间复杂度:
指算法运行过程中所使用的辅助空间的大小。
1、除了需要存储算法本身的指令、常数、变量和输入数据外,还需要存储对数据操作的存储单元。
2、若输入数据所占空间只取决于问题本身,和算法无关,这样只需分析该算法在实现时所需的辅助单元即可。
3、算法原地工作是指算法所需的辅助空间是常量,即O(1)。