-
数据结构与算法
学习目的:我们学习算法和数据结构,是为了学会在编程中从时间复杂度、空间复杂度方面考虑解决方案,训练自己的逻辑思维,从 而写出高质量的代码,以此提升自己的编程技能,获取更高的工作回报。
-
数据结构
定义:数据结构 (Data Structure) 指的是带有结构特性的数据元素的集合。
学习的目的:为了帮助我们了解和掌握计算机中的数据是以何种方式进行组织、存储的。
Q1:何为结构特性?
所谓结构特性,指的是数据的逻辑结构,物理结构及它们之间的关系
-
逻辑结构:数据元素之间的相互关系
根据元素之间的不同关系,我们将逻辑结构细分为以下四种:
1. 集合结构:元素之间仅共处同一集合,除此外并无其它关系,此集合的性质与数学上的 "集合" 非常相似,如无序性、唯一 性、元素不重复等。
2. 线性结构:即 "一对一" 的结构关系,常见的数组、链表、哈希表等都属于线性结构。
3. 树状结构:即 "一对多" 的结构关系,结构中第一个元素称为 "根" ,其余元素称为 "子树",常见的树状结构有:二叉树、 多叉树、字典树等。
4. 图形结构:即 "多对多" 的结构关系,与线性结构不同,图形结构是一种非线性的数据结构,由一些小圆点(称为顶点或结 点)和连结这些圆点的直线或曲线(称为边)组成。结点之间的邻接关系可以是任意的。常见的图形结构有:无向图、有 向图、连通图等。
-
物理结构:数据的逻辑结构在计算机中的存储方式。
数据在计算机中的存储形式是多样的,比较常用的是以下两种。
-
顺序存储结构 :将数据按顺序放置在一片地址连续的存储单元里。这样的存储结构中,逻辑上相邻的元素 (如上图 线性结构里的元素 0 和元素 1) 在物理地址上也必然相邻。
优点:简单、易理解、占用的空间少
缺点:需要占用连续的存储空间,且存储空间必须事先分配,对于插入、移动、删除元素等操作时间效率低。
-
链式存储结构 :将数据存放在任意的存储单元里,存储单元的地址不一定连续。
优点:存储空间不必事先分配,不会浪费存储空间,对于插入、移动、删除元素等操作时间效率较高。
缺点:存储空间开销大 (每个存储单元除了要存储数据本身之外,还要存储指针)
指针:指出某数据元素在逻辑关系的直接后继元素所在链结点的地址
-
Q2:为什么要研究数据的结构特性?
为了提高计算机硬件的利用率。这里引用《算法通关手册 (数据结构与算法) 》中的一个例子:
操作系统想要查找应用程序 「Microsoft Word」 在硬盘中的哪一个位置存储。如果对硬盘全部扫描一遍的话肯定效率很低, 但如果使用 [B+数] 作为索引,就能很容易的搜索到
Microsoft Word
这个单词,然后很快的定位到 「Microsoft Word」这个 应用程序的文件信息,从而从文件信息中找到对应的磁盘位置。 -
-
Day_1 数据结构与算法&LeetCode入门及攻略
最新推荐文章于 2024-11-13 19:36:04 发布