前言:
数据结构与算法系列先看这里,有助于你更好地获取内容。
首先明白一个问题:为什么要研究数据结构?
这是因为所有的程序本质上是对数据进行处理,如何高效的处理数据,这依赖于数据本身的结构(如类型(整型、浮点型等)、维数、是否为复杂类型(结构体类型、类类型)等)以及数据之间的逻辑关系(线性、非线性等)。我们所学的数据结构这门课程就是研究这些内容的,只有弄清楚了这些,我们才可以用高效的算法与之结合,产生高效率的程序。掌握好数据结构的内容也是一个程序员的基本功,特别对于c/c++程序员。
数据结构离不开算法,设计好的数据结构就是为了让算法顺利方便的实施。因此,此系列也涉及不少常见算法,以加深对数据结构的理解和应用。
我想说:一个没有研究过数据结构的c/c++程序员,不是一个合格的c/c++程序员。
常见用语解释
- 逻辑结构:描述的是数据元素之间的逻辑关系,如线性和非线性。
- 物理结构:描述的是数据元素在计算机存储器上的存储安排,也叫做存储结构。如顺序存储,链式存储。
- 稳定性:判断一个排序算法稳定性的根据很简单:相同的元素在排序后的前后位置关系应该不变,若发生了改变,则表明此算法是不稳定的。
- 数据结构:一种存储和组织数据的方式,旨在便于访问和修改。没有一种单一的数据结构对所有的用途均有效,故重要的是了解该数据结构类型的特点和使用场景。
- 线性结构:唯一前驱、唯一后继,反映一种线性关系。
- 树形结构:唯一前驱、多个后继,反应一种层次关系。
- 图结构:前驱个数和后驱个数都不限制,反应一种网状关系。
- 时间复杂度、空间复杂度(这两个是必须理解的)。
- O(1)表示时间复杂度不依赖于数据规模n,即复杂度是一常数。
- 我们常见的,其实是,这是一种约定俗成的写法,并且对任何不为1的a,都有是O()的。
- 它比线性n增长慢。
- 的增长率低于二阶,但高于一阶n。
- 指数规模比任何的多项式的如()都快。
说明
数据结构与算法目录
导入:
约瑟夫问题的数组解法
一、数据结构基础篇
- 链表
- 栈和队列
- 串
- 树
二、排序
- 插入排序
所有内容的目录
有任何疑问和建议,欢迎各位留下评论,希望不吝赐教。
本博客长期更新,你的建议会及时反映到博客中。期待你的精彩评论!多谢。
For a programmer,your charm derives from your code.