JavaScript数据结构与算法

我们经常会听到数据结构与算法这个东西,或者说是,大家总会听到算法这个词,而且打代码的大家都知道算法的重要性,它不仅决定我们的薪资,而且决定我们的编程思维高度,从这篇文章开始,我会带着用JavaScript走一遍数据结构与算法

1. 什么是数据结构与算法

数据结构与算法,是一句话,它由三个词组成

  1. 数据
  2. 结构
  3. 算法

这三者是紧密相连的,缺一不可,所以大家才会说数据结构与算法,那么我们拆分三部分,来让大家彻底理解

2. 数据

数据:数据由数据元素、数据对象、数据项构成

  1. 数据元素:数据的基本单位,也称为结点或者是记录
  2. 数据对象:相同特性的数据元素的集合,是数据的一个子集
  3. 数据项:独立含义的数据的最小单位

我们知道了概念,但是可能太过抽象,大家还是不理解,这个给大家一个例子

这个一张人员表

  • 张三这一行就是一个数据元素
  • 整个人员表就是一个数据对象
  • 姓名,性别,学号就是数据项

好了,我们知道什么是数据了,那么,数据到底是干什么用的呢?

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

嗷~~原来是这样!
这回大家应该真正了解什么是数据了,也知道用途了

那么,我们存储数据,是不是应该有些方式呢?诶!!就是结构

3. 结构

我们要选取一种好的方式来存储数据

简单的数据,我们可以用变量或者是数组对数据进行存储

但是一个复杂的数据呢?它里面不仅有数据,每个数据之间还有一定的关系

这个时候我们就不能用简单的数据存储了

我们无法用一个数组来体现出数据之间的逻辑关系,我们后期数据调用的时候就会出问题了

所以,数据结构的主要作用就是:阐述关系

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

结构分为:逻辑结构和物理结构

逻辑结构:简单理解为关系结构,类似于七大姑八大姨的感觉

那么,我们有多少种逻辑结构呢?

  • 集合结构::元素同属于一个集合,它们之间没有什么特殊的关系,就是单纯住在一起
  • 线性结构:数据关系是一对一,是一种有序数据的集合;除了第一个和最后一个数据元素之外,其它数据都是首尾相接的

    四个特点:
    1.必存在一个第一个元素
    2.必存在最后一个元素
    3.除最后一个元素外,其它数据元素均有一个唯一的后续
    4.除第一个元素外,其它数据元素均有一个唯一的前驱
    数组就是一个线性结构,栈,队列
  • 树形结构:数据元素是一对多的关系
  • 图形结构:多对多

    那么物理结构呢

物理结构:数据元素存储到计算中的存储器。是对于内存而言的 数据的存储结构应该正确的反应数据元素之间的逻辑关系

  • 顺序存储
  • 链式存储

4. 数据结构总结

OK,到这里大家知道什么是数据了,知道什么是结构了
那么,我给大家一个例子,感受一下

有一个渣男,叫做A,他有一个女朋友B,还有一个女朋友C、一个女朋友D
我们现在要进行分析
A、B、C、D是四个人,是不是就是四个数据
然后这四个人,是不是有一些关系,是不是就是结构

我们画图可以清晰明了

哦!是不是清晰明了,这就是我们数据与结构的意义!
假如关系更乱,我们依旧可以进行分析
比如,B有还有男朋友E,C也有男朋友F,E和C还有关系
那么我们还是可以分析出来

当然,这就是个例子,就是想告诉大家数据和结构的作用

我们以后处理问题的时候就要分析,它是什么结构,然后才能去解决问题

5. 算法

其实算法,我没有必要单拿出来说了,相信大家到这里应该也猜到算法的作用了

当我们分析出数据和结构之后,去解决问题,解决问题的方法,就是算法

所以我们可以说

程序=数据结构+算法

总结

今天就是算法的启蒙啦,之后我会为大家逐个讲解各种数据结构,并且用力扣题做练习

JavaScript数据结构与算法启蒙相关推荐

  1. 学习JavaScript数据结构与算法(一):栈与队列

    本系列的第一篇文章: 学习JavaScript数据结构与算法(一),栈与队列 第二篇文章:学习JavaScript数据结构与算法(二):链表 第三篇文章:学习JavaScript数据结构与算法(三): ...

  2. javascript数据结构与算法---检索算法(二分查找法、计算重复次数)

    javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...

  3. 为什么我要放弃javaScript数据结构与算法(第二章)—— 数组

    第二章 数组 几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构.JavaScript里也有数组类型,虽然它的第一个版本并没有支持数组.本章将深入学习数组数据结构和它的能力. 为什么 ...

  4. JavaScript数据结构与算法——链表详解(下)

    在JavaScript数据结构与算法--链表详解(上)中,我们探讨了一下链表的定义.实现原理以及单链表的实现.接下来我们进一步了解一下链表的其他内容. 1.双向链表 双向链表实现原理图: 与单向链表不 ...

  5. JavaScript数据结构与算法——链表详解(上)

    注:与之前JavaScript数据结构与算法系列博客不同的是,从这篇开始,此系列博客采用es6语法编写,这样在学数据结构的同时还能对ECMAScript6有进一步的认识,如需先了解es6语法请浏览ht ...

  6. JavaScript数据结构与算法——队列详解(下)

    接下来会借助本人另一篇文章JavaScript数据结构与算法--队列详解(上)中实现的队列类及其方法实现一个应用. 配对问题 需求分析:在一个文件中保存着一份男女混合的数据,名称前以B开头表示男士,以 ...

  7. JavaScript数据结构与算法——列表详解(下),基于Nodejs实现一个列表应用

    1.上篇回顾: 上篇我们实现了一个列表类,并添加了一些属性,实现了比较多的方法,本文章将与大家一起使用列表实现一个图书借阅查询系统.需要使用JavaScript数据结构与算法--列表详解(上)中写好的 ...

  8. JavaScript数据结构与算法——列表详解(上)

    列表是一组有序的数据,每个数组中的数据项称为元素.数组相关知识不够了解的伙伴可以阅读本人上篇博客在JavaScript中,列表的元素可以是任意数据类型.列表中可以保存不定数量的元素,实际使用时元素的数 ...

  9. JavaScript数据结构与算法——数组详解(下)

    1.二维与多维数组 JavaScript只支持一维数组,但是通过在数组里保存数组元素的方式,可以轻松创建多维数组. 1.1 创建二维数组 二维数组类似一种由行和列构成的数组表格,在JavaScript ...

最新文章

  1. 三维空间平面拟合MATLAB
  2. MapReduce英语面试
  3. 黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程(权重,盒子模型)
  4. 从编程角度看32位和64位
  5. 1.关于python
  6. layui自定义ajax左侧三级菜单
  7. 计算机网络--从五层模型开始(完善中)
  8. 百面机器学习——python实现二分类逻辑回归
  9. J2EE MVC模式框架中,表单数据绑定功能不安全实现在Tomcat下造成的DoS及RCE
  10. 高程计算 高程计算 高程计算
  11. 读后感之悟道-一位20年IT高管的职场心得
  12. 小武与箭指offer----list.invert
  13. 远程桌面 android,Microsoft远程桌面
  14. 基于MATLAB的数字图像处理的设计与实现 转
  15. 菜鸟学示波器,示波器视频教程,ZLG示波器学习资料
  16. 北京计算机游戏专业排名2015,2015大学专业排行榜_大学最佳专业排行榜_游戏专业怎么样_52PK游戏网...
  17. L2-039 清点代码库 - java
  18. 如何在计算机上增加一个磁盘分区,win10系统额外新增加一个硬盘分区的详细办法...
  19. 鸿蒙系统需要备份,华为鸿蒙系统正式发布之后,还需要面临三个问题
  20. xHunt:针对科威特航运组织的攻击行动

热门文章

  1. layuiadmin 模版渲染完成执行 lay-done 写到 controller(js业务模块文件) 首次无法执行的解决方法
  2. error C4996: ‘GetVersionExW‘: 被声明为已否决
  3. 苹果7支持快充吗_苹果iPhone 12、12Pro充电抢先评测:支持20W PD快充 - Apple iPhone
  4. 新增25%岗位!航旅纵横2023春招开启!
  5. Pytest全栈自动化测试指南-夹具入门
  6. Nodejs urlencode模块url加密解密
  7. 图像傅里叶变换--OpenCV
  8. 设计分享|单片机按键控制继电器实现灯亮灭
  9. 问道崂山 2018·中国(青岛)大数据应用与解决方案高峰论坛圆满落幕
  10. 双十一手机大战花开两朵:荣耀的降维***和小米的回光返照