Day_1 数据结构与算法&LeetCode入门及攻略

  • 数据结构与算法

    学习目的:我们学习算法和数据结构,是为了学会在编程中从时间复杂度、空间复杂度方面考虑解决方案,训练自己的逻辑思维,从 而写出高质量的代码,以此提升自己的编程技能,获取更高的工作回报。

    • 数据结构

      定义:数据结构 (Data Structure) 指的是带有结构特性的数据元素的集合。

      学习的目的:为了帮助我们了解和掌握计算机中的数据是以何种方式进行组织、存储的。

      Q1:何为结构特性?

      所谓结构特性,指的是数据的逻辑结构,物理结构及它们之间的关系

      • 逻辑结构:数据元素之间的相互关系

      根据元素之间的不同关系,我们将逻辑结构细分为以下四种:

      1. 集合结构:元素之间仅共处同一集合,除此外并无其它关系,此集合的性质与数学上的 "集合" 非常相似,如无序性、唯一 性、元素不重复等。

      2. 线性结构:即 "一对一" 的结构关系,常见的数组、链表、哈希表等都属于线性结构。

      3. 树状结构:即 "一对多" 的结构关系,结构中第一个元素称为 "根" ,其余元素称为 "子树",常见的树状结构有:二叉树、 多叉树、字典树等。

      4. 图形结构:即 "多对多" 的结构关系,与线性结构不同,图形结构是一种非线性的数据结构,由一些小圆点(称为顶点或结 点)和连结这些圆点的直线或曲线(称为边)组成。结点之间的邻接关系可以是任意的。常见的图形结构有:无向图、有 向图、连通图等。

      • 物理结构:数据的逻辑结构在计算机中的存储方式。

        数据在计算机中的存储形式是多样的,比较常用的是以下两种。

        1. 顺序存储结构 :将数据按顺序放置在一片地址连续的存储单元里。这样的存储结构中,逻辑上相邻的元素 (如上图 线性结构里的元素 0 和元素 1) 在物理地址上也必然相邻。

          优点:简单、易理解、占用的空间少

          缺点:需要占用连续的存储空间,且存储空间必须事先分配,对于插入、移动、删除元素等操作时间效率低。

        2. 链式存储结构 :将数据存放在任意的存储单元里,存储单元的地址不一定连续。

          优点:存储空间不必事先分配,不会浪费存储空间,对于插入、移动、删除元素等操作时间效率较高。

          缺点:存储空间开销大 (每个存储单元除了要存储数据本身之外,还要存储指针)

          指针:指出某数据元素在逻辑关系的直接后继元素所在链结点的地址

      Q2:为什么要研究数据的结构特性?

      为了提高计算机硬件的利用率。这里引用《算法通关手册 (数据结构与算法) 》中的一个例子:

      操作系统想要查找应用程序 「Microsoft Word」 在硬盘中的哪一个位置存储。如果对硬盘全部扫描一遍的话肯定效率很低, 但如果使用 [B+数] 作为索引,就能很容易的搜索到 Microsoft Word 这个单词,然后很快的定位到 「Microsoft Word」这个 应用程序的文件信息,从而从文件信息中找到对应的磁盘位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值