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

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

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

 

【从头开始学】系列简介

你们好,我是D狼,做为一个计算机专业的学生,在大学作过一些专业实践,可是没有养成良好的编程习惯,写这个博客的主要目的是想记录本身从新学习专业课的心路历程(D狼以为如今的专业课教学过于理论),因而我想经过分享本身在实际编程练习中对数据结构的理解,但愿能帮助那些和我同样对专业课理解不深或者对计算机专业课迷茫的人,也让本身在这个分享过程当中提高本身代码的质量。算法

首先什么是数据结构?

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

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

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

什么是顺序存储?

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

0 1 2 3
a b c d

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

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

什么是链式存储?

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

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

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

相关文章
相关标签/搜索