阅读 240

数据结构与算法入门系列一之数据结构入门与数组

程序设计等于什么?

程勋设计的实质是对确定问题,选择一种好的结构,加上设计一种好的算法。所以说程序设计 = 数据结构 + 算法(也有人觉得程序设计的本质就只是 数据结构,认为算法只是解数据结构的一种过程)。

Tips:高德纳开创了数据结构这门课

什么是数据?

数据是描述客观事物的符号,数据 = 符号

  1. 可以输入到计算机中

  2. 能够被计算机识别

数据元素、对象、项

  • 数据元素:数据的基本单位,也称为节点(结点)或者是记录(表格项【张三】)

  • 数据对象:相同特性的数据元素的集合,是数据的一个子集(表对象【人员表】)

  • 数据项:独立含义的数据的最小单位(表标题【名字】)

数据的目的是存储,存储的目的是:后期再利用

const a = [1, 2, 3]
const Salary = 100
const Student = ['张三', '李四', '王五']
console.log(a, Salary, Student)复制代码

对于存储数据这点,我们要选取一种好的方式来存储数据,比较简单的数据,我们可以用变量或者是数组对数据进行存储。

但如果有一个复杂的数据,例:

const dog = ['渣男', '女盆友1', '女盆友2', '....']复制代码

类似 dog 这样的数组我们无法从里边去体现数据之间的逻辑关系,后期是不是无法使用。

那么如何存储有复杂关系的数据更有助于后期对数据的再利用?

这时就可以使用到数据结构,而数据结构的主要作用:阐述关系。

结构是指什么?

  • 简单的理解就是关系,不同的数据元素之间不是独立的,而是存在特定的关系。

数据结构的分类

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

  • 共有四种:集合结构,线性结构、树形结构、图形结构。

集合结构:

数据元素同属于一个结合,它们之间没有其它的关系。它们的共同属性是:"同属于一个集合"。

线性结构:

线性结构是一种有序数据的集合,最典型的数据观是一对一。除了第一个和最后一个数据元素之外,其他数据元素都是首位相接的。

形成线性结构的必要条件:

  1. 必须存在第一个元素。

  2. 必须存在最后的一个元素。

  1. 除最后一个元素外,其他的数据元素均有一个唯一的"后续"。

  2. 除第一个元素之外,其他数据元素均有一个唯一的前驱。

例如数组,栈,队列都是线性结构。

树形结构:

数据元素是一对多(例如DOM树)。

图形结构:

数据元素是多对多关系(例如:导航地图)。

物理结构:数据元素存储到计算机中的存储器。

依内存而言,数据的存储结构应该正确的反应数据元素之间的逻辑关系。

  • 共有两种:顺序存储、链式存储。

顺序存储:

类似排队。

链式存储:

指针,指向数据元素的地址。

常见数据结构:

  • 散列表

  • 链表

  • 数组

  • 队列

Tips:对象不是数据结构:对象暴露行为,而数据结构暴露数据,且数据结构与编程语言无关。

算法具体是指什么?

解决问题的方法和步骤就是算法,且数据结构的实现离不开算法。

数据结构中的数组

数组是由相同类型的元素的集合组成的连续内存的数据结构。

数据结构中的数组是指什么?

数组:在内存中使用一串连续的区域来存放一些值,数组是相同类型数据元素的有序集合。

当数组从中间或者是从头部增加或者是删除元素的时候,数组对象会自动进行内存的扩展或是收缩,保证元素之间没有缝隙,数组元素大量移动时,效率较低,所以要尽量从数组的尾部进行增加和删除。

Tips:js的数组其实不是真正意义上的数组,因为它并没有满足真正数组的条件。

const mm=['甜甜', '芳芳', '圆圆', 1, 2, 3]复制代码

因为 js 的数组元素可以是任意类型的,且 js 中的内存地址是不连续的。

数组的优点:

1.按照索引查询元素的时候速度很快

2.存储大量的数组

3.按照索引去遍历数组

4.定义方便,访问很灵活

缺点:

1.根据内容查找会很慢

2.增加、删除元素的效率很低

3.数组的大小,一经确定是不能改变的,不适合动态存储(与js无关)

4.数组只能存储相同类型的数据(与js无关)


作者:a尘ss
链接:https://juejin.cn/post/7017367102851924004


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐