-
数据结构的组成:逻辑结构,存储结构,运算结构;
(其中数据类型中只有抽象数据类型可以用于定义一个完整的数据结构,PS.抽象数据类型定义了数据的取值范围,结构形式以及对数据操作的集合。)
-
线性数据结构:
线性表,栈,队列,串,数组;
-
非线性数据结构:
集合,树,图状结构;
-
在存储数据的时候,不仅要存储数据元素的值,还要存储元素之间的关系;
-
二叉树和二叉排序树的逻辑与存储结构可能完全相同,但是!
在查找结点的时候,二叉树的平均时间复杂度O(n);
二叉排序树的平均时间复杂度O(log以2为底的n次方);
所以运算的效率也会不同;
6.时间复杂度计算:
常见的渐进时间复杂度从低到高的大致顺序:
- O(1):常数时间复杂度。无论输入数据规模多大,执行时间都是恒定的。例如访问数组中的特定元素(已知索引)。
- O():对数时间复杂度。随着输入数据规模的增大,执行时间以对数方式增长。例如在有序数组中进行二分查找。
- O(n):线性时间复杂度。执行时间与输入数据规模呈线性关系。例如遍历一个数组。
- O():常见于高效的排序算法(如快速排序、归并排序、堆排序在平均情况下)。
- O():平方时间复杂度。例如冒泡排序、选择排序、插入排序在最坏情况下的时间复杂度。
- O():立方时间复杂度。某些算法在处理特定问题时可能出现,一般效率较低。
- O():指数时间复杂度。随着输入规模的增长,执行时间呈指数级增长,一般只适用于非常小的输入规模。例如某些暴力搜索算法。
- O(!):阶乘时间复杂度。增长速度极快,一般只有非常小的输入规模才能在可接受的时间内解决问题。例如全排列问题的暴力解法。
- O()