JavaScript数据结构与算法
作者:? 发布时间:2024-07-05 20:21:36
前言
数据结构与算法这个词相信大家都听过、了解过、学过,那为什么要学习数据结构与算法呢?我感觉有以下两个原因:
为了一个比较满意的Offer,现在去面试任何一家公司,不管你是前端还是后端,多多少少会问一些关于算法的问题;
编程需要,如果没有很好的数据结构与算法的功底,很多事情都是知其然不知其所以然,无法深入的学习,还有就是随着项目的复杂,数据量也随之变大,数据结构与算法可以更优雅的处理这些数据。
程序=数据结构+算法,是计算机科学界的一个经典名句,这句话也体现了一个应用程序是与数据结构和算法密不可分的。
数据结构
首先我们先来了解一下数据结构,数据结构就是计算机存储和组织数据的一种方式,指相互之间存在一种或者多种特定关系的集合。在不同的场景选择更适合的数据结构,可以为应用程序带来更好的运行效率和存储效率。
常见的数据结构
常见的一些数据结构主要有以下几种:
数组(Array) :数组是一种聚合数据类型,它是将具有数据类型的的一些变量有序的组织到一起的一个集合;
优点是插入快;缺点是查找、删除慢,只能存储单一类型的元素;
**链表(Linked List):**链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。
优点是插入、删除快;缺点是查找慢;
**栈(Stack):**栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。
优点是提供先进后出的存储方式,缺点是对其他项操作都很慢;
**队列(Queue):**队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。
优点是提供先进先出的存储方式,缺点是对其他项操作都很慢;
**树(Tree):**树是典型的非线性结构,它是包括,2 个结点的有穷集合 K。
**图(Graph):**图是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。
算法
算法简而言之就是解决问题的步骤,对特定问题求解步骤的一种描述,他的定义的是解决特定问题求解步骤的准确而完整的描述,在计算机中表现为一系列指令的集合,算法代表着用系统的方法描述解决问题的策略机制。
举两个例子来说明一下什么是算法:
去北京看演唱会:首先我们需要确定地点、然后购买门票、车票、入场、看演唱会、演唱会结束
把大象装进冰箱:把冰箱门打开,大象塞进去,关上冰箱门。
虽然把大象装进冰箱这是一个玩笑话,假设这真的是一个问题,解决问题的步骤适用于任何动物。
算法的特征
算法具有以下五个特征:
有穷性:对于任意一组合法输入值,在执行有穷步骤之后一定能结束,即:算法中的每个步骤都能在有限时间内完成。
确定性:在每种情况下所应执行的操作,在算法中都有确切的规定,使算法的执行者或阅读者都能明确其含义及如何执行。并且在任何条件下,算法都只有一条执行路径。
可行性:算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现之。
有输入:作为算法加工对象的量值,通常体现在算法当中的一组变量。有些输入量需要在算法执行的过程中输入,而有的算法表面上可以没有输入,实际上已被嵌入算法之中。
有输出:它是一组与“输入”有确定关系的量值,是算法进行信息加工后得到的结果,这种确定关系即为算 * 能。
算法的目标
一个优秀的算法需要追求以下两个目标:
运行所需的时间更少
占用的内存空间更小
上面所说的正是时间复杂度和空间复杂度的概念,相信很多同学都对这两个概念有所了解,不了解也没有关系,下篇文章介绍时间复杂度和空间复杂度。
来源:https://juejin.cn/post/7105409100330057735


猜你喜欢
- 大多数APP里面返回的是json格式数据,或者一堆加密过的数据 。这里以超级课程表APP为例,抓取超级课程表里用户发的话题。1、抓取APP数
- 用法一 SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiser
- 1.超链接<a href="https://www.aspxhome.com" title="asp之家
- 以前经常吃公司旁边的食堂,人多,排队。夏天的时候,我们总要找一个靠窗口通风好的地方坐,没有空调只有风扇,风扇很多,开关都集中在一个地方,应该
- 表单的验证是开发WEB应用程序中常遇到的一关。有时候我们必须保证表单的某些项必须填写、必须为数字、必须是指定的位数等等,这时候就要用到表单验
- 一图胜“十”言:SQL Server 数据库总结 一个大概的总结 经过一段时间的学习,也对数据库有了一些认识。 数据库基本是由表,关系,操作
- 本文实例讲述了Python实现的字典值比较功能。分享给大家供大家参考,具体如下:#coding=utf8import loggingimpo
- 使用torch.utils.data.Dataset类 处理图片数据时,1. 我们需要定义三个基本的函数,以下是基本流程class our_
- 本文实例为大家分享了python3.5绘制随机漫步图的具体代码,供大家参考,具体内容如下代码中我们定义两个模型,一个是RandomWalk.
- 上一篇文章讲解了重置 MySQL 的密码,有同学反馈无法程连接到数据库,这是因为 MySQL 安装完成后只支持 localhost 访问,我
- Pyqt5安装并配置到pycharm方法:教你如何用pycharm安装pyqt5及其相关配置一、简介QLabel是界面中的标签类,继承自QF
- 经典鼠标控制左右滚动,图片间隔无缝滚动,悬停滚动,图片控制左右滚动JavaScript代码<!DOCTYPE html PUBLIC
- 在Dreamweaver 4.0中,我们就已接触了模板与库的概念,知道它们是批量生成风格类似的网页的好工具。如今在Dreamweaver M
- 问题描述(以下讨论范围仅限Windows环境): D:\develop\ide\mysql\mysql5.5\bin> mysql -
- 1、问题:群中有同学贴了如下一段代码,问为何 list 最后打印的是空值? from multiprocessing
- 使用场景:1) 爬虫设置ip代理池时验证ip是否有效2)进行压测时,进行批量请求等等场景grequests 利用 requests和geve
- plt.imshow(image)无法显示图片的解决使用plt.imshow()发现不能显示图片,加了plt.show()也还是不能显示先引
- GeoPandas是一个基于pandas,针对地理数据做了特别支持的第三方模块。它继承pandas.Series和pandas.Datafr
- 在 settings.py 中添加以下内容:LOGGING = { 'version': 1,
- 本文实例讲述了python单元测试unittest用法。分享给大家供大家参考。具体分析如下:单元测试作为任何语言的开发者都应该是必要的,因为