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

数据结构与算法

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

什么是数据结构和算法?

我们先来看 几个术语:

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

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

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

    就是书。

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

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

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

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

JavaScript 数据结构与算法(一):概述_第1张图片

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

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

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

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

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

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

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

补充:
JavaScript 数据结构与算法(一):概述_第3张图片
JavaScript 数据结构与算法(一):概述_第4张图片


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

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

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

你们的内心???

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

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

  • 解决问题的思想
  • 面试

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

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

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

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


JavaScript 数据结构与算法

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

这本书的目录是这样的:

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

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



推荐书籍:

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

  • JavaScript 数据结构与算法(二):栈与队列
  • JavaScript 数据结构与算法(三):树
  • JavaScript 数据结构与算法(四):图

你可能感兴趣的:(阿哈哈哈大前端,数据结构,算法)