数据结构是计算机科学中的核心概念,它涉及到如何高效地组织和管理数据,以便于进行有效的计算和操作。在本课程“数据结构1800-1绪论”中,我们首先会接触到一些基础的理论知识。
1. **算法的复杂性**:算法的计算量的大小通常被称为算法的时间复杂度或空间复杂度。时间复杂度衡量了算法执行所需的基本运算次数,与问题的规模有关。例如,题目中提到的第2题,算法的时间复杂度取决于问题的规模A和待处理数据的初态B。
2. **算法的特性**:算法是一组解决问题的明确规则,它必须具备可执行性、确定性和有穷性。这意味着算法必须能够被执行,每次执行都有确定的结果,并且在有限的步骤内结束。如第3题所示,选项B正确。
3. **算法与程序的区别**:算法是一种问题求解的步骤描述,而程序是实现这个描述的具体代码。第4题中,算法可以是问题求解步骤的描述,但并不一定是实际的程序。
4. **算法的错误说法**:第5题中,错误的说法是算法最终必须由计算机程序实现,因为算法本身是一个逻辑描述,可以独立于特定的编程语言存在。
5. **算法原地工作与空间复杂度**:原地工作意味着算法只需要有限的额外空间,不一定要没有辅助空间,所以第6题中(1)是错误的。
6. **数据结构分类**:逻辑上,数据结构可以分为线性结构和非线性结构。线性结构如数组、链表,非线性结构如树、图。第7题中C选项正确。
7. **存储结构与术语**:存储结构直接影响到数据的访问效率和内存占用。第8题中,哈希表、链表和栈都与存储方式紧密相关,而循环队列则依赖于数组或链表的实现,因此D选项正确。
8. **线性结构**:线性结构的数据元素之间存在一对一的关系,如串、数组、队列和栈。第9题中,D选项串是线性结构。
9. **无关术语**:与数据的存储结构无关的术语可能是抽象的概念,如第10题中的线索树,它是一个为了方便遍历而添加额外信息的数据结构。
10. **程序段的运行次数**:在第11题中,嵌套循环的总运行次数为n×n,即O(n^2)。
11. **排序算法的最坏情况**:第12题中的程序段是一个冒泡排序的变体,最坏情况下需要比较n(n-1)/2次,即O(n^2)。
12. **非多型数据结构**:多型数据类型是指数据元素的类型不确定。第13题中,栈是一个固定类型的线性数据结构,因此不是多型的。
13. **非线性数据结构**:非线性数据结构指数据元素间不是一对一的关系,如树、图。第14题中A选项树是非线性的,而B选项字符串、C选项队列和D选项栈都是线性的。
14. **非线性数据结构的例子**:第15题中,完全二叉树是非线性数据结构,因为它不是简单的线性序列。
15. **存储连续性**:在连续存储设计中,数据元素的存储单元通常是连续的,但这不是绝对的。第16题中A选项正确。
16. **逻辑结构与物理结构**:逻辑结构是指数据之间的关系,而物理结构涉及数据在内存中的实际布局。第17题中,属于逻辑结构的有线性结构、树形结构、图形结构等,它们可以有不同的物理实现方式。
这些知识点构成了数据结构学习的基础,包括算法复杂性、数据结构分类、算法特性、存储结构及其影响因素,以及算法的执行次数分析等。理解这些概念对于后续深入学习数据结构和算法至关重要。