【从头开始学】数据结构01

【从头开始学】数据结构01

    • 首先什么是数据结构?
    • 什么是顺序存储?
    • 什么是链式存储?
      • 总的来说,顺序存储和链式存储在时间复杂度上都是O(n)。但在查找效率和删除效率上相差很大。
    • 下节继续分解存储结构的剩下两种方式

【从头开始学】系列简介

大家好,我是D狼,作为一个计算机专业的学生,在大学做过一些专业实践,但是没有养成良好的编程习惯,写这个博客的主要目的是想记录自己重新学习专业课的心路历程(D狼觉得现在的专业课教学过于理论),于是我想通过分享自己在实际编程练习中对数据结构的理解,希望能帮助那些和我一样对专业课理解不深或者对计算机专业课迷茫的人,也让自己在这个分享过程中提升自己代码的质量。

首先什么是数据结构?

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。	(第一次看的时候我也很懵逼,很抽象)

说人话就是 :数据结构就是在你编程开发或者在对数据进行操作时,针对你所在的特定情况选择对于你现在来说最适合的算法或者操作,记住,最合适的就是最好的。

数据结构由 逻辑结构、存储结构 和 数据运算 组成;
1.逻辑结构又分为 线性结构 和 非线性结构 组成;
其中线性结构就是一对一,例如 数组、链表等,而非线性结构有 集合结构 和 树结构、图结构 ,集合结构就是同属于一个集合。
2.存储结构有 顺序存储、链接存储、引索存储和散列存储。
顺序存储,相邻存储单位;
链接结构,不要求物理地址相邻,通过地址指针去存取数据;
引索结构,附加引索表;
散列存储,根据关键字直接计算出存储位置

什么是顺序存储?

在编程过程中,用到顺序存储的数据结构,典型代表就是数组、在Java中List对象、TreeSet对象都是有序的。都是在内存中开辟一块静态连续区域用于存储数据。如下表所示。

0 1 2 3
a b c d

顺序存储的优势是可以快速的找到你说需要的值,就好比你在一棵树下可以很清楚的看到哪个枝丫上长着果子一样,时间复杂度为o(1)。
但是缺点是当我想要摘掉坏的果子时,就改变了树上果子的序列,这样我对这些果子的编号都要重新去编排,时间复杂度为O(N)。

如上图所示,当C果子坏掉时,等于剪掉了第三个枝丫,把第四个枝丫变成了第三个枝丫
在顺序存储中,修改和添加、删除数据需要大量移动,导致了效率的降低。

什么是链式存储?

大家小时候都玩过磁铁吧,小时候就喜欢把贴着神奇宝贝图片的磁铁连在一起,这个链表就有这个意思,假如第一个磁铁上面是妙蛙种子,而第二个是皮卡丘,第三个为喷火龙。
链式存储可以分布在任何一个碎片的存储空间中,但是可以通过上一个所存信息找到下一个所在位置,从而进行增删查改。在JAVA中LINKLIST就是代表。
优点是能够快速的进行增删改操作。时间复杂度为O(1),前提是知道元素所在位置。
缺点是找到这个元素,需要一个个遍历,所以时间复杂度为O(n)。
拿取方便

总的来说,顺序存储和链式存储在时间复杂度上都是O(n)。但在查找效率和删除效率上相差很大。

下节继续分解存储结构的剩下两种方式

猜你喜欢

转载自www.cnblogs.com/ac4nd/p/12956400.html