欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript 数据结构与算法(一):概述

程序员文章站 2022-07-13 22:00:19
...

数据结构与算法

程序设计 = 数据结构 + 算法

什么是数据结构和算法?

我们先来看 几个术语:

  • 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。

    可以比作图书馆中所有的书。

  • 数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。

    就是书。

  • 数据项:一个数据元素可以由若干个数据项组成。

    其实就是书名、作者、出版社啥的 …

  • 数据对象:是性质相同的数据元素的集合,是数据的子集。

    某一类书。比如都是数据结构一类的书。

JavaScript 数据结构与算法(一):概述

数据结构 是相互之间存在的一种或多种特定关系的数据元素的集合。数据结构就是指一组数据的存储结构。

如果给你一堆书你会怎么放?看书的规模。

按照视点的不同,数据结构可以分为 逻辑结构物理结构
JavaScript 数据结构与算法(一):概述

算法 是解决特定问题求解步骤的描述,在计算机中表现为指令的特定序列,并且每条指令表示一个或多个操作。 算法就是操作数据的一组方法。

以图书馆举例,找书。如果一本一本找累死人,要是有个索引,先找哪一类这样会快很多。如何查找其实就是算法。

那既然说到了算法,我们来看几个和算法有关的知识点:

  • 算法的特性:有穷性、确定性、可行性、输入、输出。
  • 算法的设计的要求:正确性、可读性、健壮性、高效率和低存储量需求。
  • 算法的度量方法:事后统计方法(不科学、不准确)、事前分析估算方法。
  • 常见的时间复杂度所耗时间的大小排列:
    JavaScript 数据结构与算法(一):概述

补充:
JavaScript 数据结构与算法(一):概述
JavaScript 数据结构与算法(一):概述


✍️ 数据结构与算法的关系
打个比方,你打算和男朋友(女朋友)去看音乐剧,到了戏院,抬头一看 ——《梁山伯》18:00 开演。
嗯?啥情况?一问才知,今天饰演祝英台的演员生病,所以梁山伯唱独角戏。

你们觉得没有意思,就打算去看电影。到了影院,一看海报 ——《罗密欧》,

问了才知,原来饰演朱丽叶的演员因为嫌弃演出费用太低,中途退演了,
制片方考虑到已经开拍,于是把电影名字定为《罗密欧》,主要讲男主角的心路历程。

你们的内心???

而数据结构和算法就是类似的关系。只谈数据结构,当然可以,几种重要的数据结构很快就可以看完。看完可能没什么感觉,不知道这些数据结构有何用处。但如果把相应的算法拿出来看一看,你就会发现,计算机的前辈们,很牛,他们使得很多看似很难解决或者没法解决的问题,变得如此美妙和神奇。

为什么要学习数据结构和算法?

  • 解决问题的思想
  • 面试

计算机只是一个很冰冷的机器,你给他下发什么样的指令,它就作出什么样的反应。

而开发工程师要做的是如何把实际的问题转化成计算机的指令,如何转化?
《数据结构》的经典说法:设计出数据结构, 在施加以算法就行了。

所以,很重要的一点,数据结构和算法对建立解决问题的思想非常重要。

如果说 Java 是自动档轿车,C 就是手动档吉普。数据结构呢?是变速箱的工作原理。你完全可以不知道变速箱怎样工作,就把自动档的车子从 A 开到 B,而且未必就比懂得的人慢。写程序这件事,和开车一样,经验可以起到很大作用,但如果你不知道底层是怎么工作的,就永远只能开车,既不会修车,也不能造车。

JavaScript 数据结构与算法(一):概述

JavaScript 数据结构与算法

说到 JavaScript 数据结构与算法,大家可能想到了下面这本书。
JavaScript 数据结构与算法(一):概述

这本书的目录是这样的:

  • 第1章 JavaScript 编程环境和模型
  • 第2章 数组
  • 第3章 列表
  • 第4章 栈
  • 第5章 队列
  • 第6章 链表
  • 第7章 字典
  • 第8章 散列
  • 第9章 集合
  • 第10章 二叉树和二叉查找树
  • 第11章 图和图算法
  • 第12章 排序算法
  • 第13章 检索算法
  • 第14章 高级算法

由此可见,几个重要的数据结构有:数组、链表、栈、队列、散列表、二叉树、图 ……
也可以看到一些算法。
下次的分享我们再详细地看这些数据结构。



???? 推荐书籍

  • 《大话数据结构》
  • 《数据结构与算法 JavaScript 描述》