Js Algorithms

什么是数据结构和算法?

了解数据结构和算法的基本概念,为什么要学习它们,以及如何在 JavaScript 中应用它们。

🎯 引言

理解数据结构和算法的基本概念,知道为什么它们对写好代码至关重要。掌握生活中的例子来形象认识数据结构和算法,了解如何评估算法的优劣,还能快速了解 JavaScript 中常见的数据结构,为后续深入学习打下坚实基础。


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

写代码其实就像做饭。

想象一下,做饭需要锅碗瓢盆,这些是承载食材和烹饪的工具,对吗?这就像程序中的数据结构,它们用来存放和管理数据。

而做菜的方法,比如炒、煮、蒸、炸,这些烹饪方式就是算法,用来告诉你怎么处理和变换食材。

如果你没有好的锅碗瓢盆,再厉害的厨艺也发挥不出来;同样,如果你有好的工具但做菜方法不对,做出来的饭菜也不会好吃。

所以,学好数据结构和算法,就像做饭时选对合适的厨具和掌握正确的烹饪方法,能让你写的程序既高效又优雅。

小提示:不要把写代码当成单纯的敲代码,理解底层原理和思路,才能写出更好更快的程序。

🌲 什么是数据结构?

数据结构其实就是一种“组织和存放数据的方式”。

日常生活中,我们经常遇到各种不同的存放方式:

  • 排队买票时的队伍,就是一个队列(先进先出),第一个排队的人先买票,然后依次往后;
  • 书架上的书一本本排开,按顺序存放,这就是数组,可以通过索引快速找到某本书;
  • 家谱或者公司的组织架构,是一棵,有父子关系,祖先后代都能找到。

这些生活中的例子帮助你理解数据结构的本质:不同的结构适合不同的存储和访问需求。

在程序中,数据结构帮你管理大量数据,提升查找、插入、删除的效率。


🧩 什么是算法?

算法就是解决问题的“步骤或者规则”。

比如你想从混乱的书堆里找到一本特定的书,你可以一层层地翻,也可以先按字母排序后用二分法找。

这就是算法:不同的方法来达成同一个目标。

程序里的算法告诉计算机如何处理数据,比如排序、查找、计算路径等。

简单来说,算法就是解决问题的“秘籍”,不同的算法有不同的优缺点。


⚖️ 怎么判断一个算法好不好?

判断算法优劣,一般看三个方面:

  • 时间复杂度:算法运行需要多久?比如快慢之分,O(n)、O(log n)等表示复杂度大小。
  • 空间复杂度:算法执行时需要占用多少内存。
  • 可读性和实现难度:代码写起来复杂不复杂,别人能不能看懂。

举个例子:

你想在电话号码簿里找一个人名字,线性查找(一个个找)虽然简单,但很慢。

二分查找在有序的情况下就快很多。

所以,时间复杂度低的算法通常更好。

别只追求复杂度最低的算法,有时候简单易懂的算法更适合团队合作和维护。

🧰 JavaScript 中有哪些“天然”的数据结构?

JavaScript 提供了很多内置数据结构:

  • 数组(Array):有序列表,可以存储任意类型数据。
  • 对象(Object):键值对集合,类似字典或映射。
  • 集合(Set):一种不允许重复元素的集合。
  • 映射(Map):键值对集合,键的类型不限于字符串。

还有特殊类型和操作,比如 字符串(String) 看作字符数组,函数也是一等对象。

这些“天然”的数据结构,让你不用从零开始,实现各种功能更方便。


🧾 小节总结

  • 数据结构是管理和存储数据的方式,算法是处理数据的方法。
  • 好的算法需要兼顾效率(时间、空间)和易读性。
  • JavaScript 内置了数组、对象、集合、映射等常用数据结构。

❓ 知识问答(Q&A)

Q:为什么数据结构和算法这么重要?
A:它们是写出高效、可维护代码的基础,就像厨具和做菜方法一样,缺一不可。

Q:JavaScript 中如何选择使用数组还是对象?
A:当需要有序列表时用数组;想通过键快速查找时用对象。


🎉 恭喜你已经掌握数据结构、算法、JavaScript内置数据结构技能啦!