前端该如何学习数据结构和算法?

img

前端如何学习数据结构与算法🎓

生命不是要超越别人,而是要超越自己。

前言

算法是必须掌握的一门本领。算法也是一种思想,当你去读一些优秀框架的源码,如果对算法和数据结构一无所知,读起来很困难,你无法理解人家为什么要那样写,那样写的好处是什么,接下来就跟大家分享下作为一个前端程序员,如何学习数据结构与算法。

后续将持续更新与算法相关的文章,分享自己所学以及踩的各种坑,欢迎各位感兴趣的开发者持续关注💌

什么是算法

算法就是计算或者解决问题的步骤,算法与程序有些相似,区别在于程序是以计算机能够理解的编程语言编写而成的,可以在计算机上运行,而算法是以人类能够理解的方式描述的,用于编写程序之前。不过,在这个过 程中到哪里为止是算法、从哪里开始是程序,并没有明确的界限。

就算使用同一个算法,编程语言不同,写出来的程序也不同;即便使用相同的编程语言, 写程序的人不同,那么写出来的程序也是不同的。

数据结构与算法的作用

计算机是一个冰冷的机器,操作者下发什么指令,计算机就会执行什么操作

开发者要做的只是如何把实际问题转换成计算机可识别的指令,如何转化?《数据结构》的经典说法:设计出数据结构,在施加以算法就行了。 开发者编写的指令好坏,将直接影响到程序的性能,指令又由数据结构和算法组成,因此数据结构和算法的设计与最终程序的好坏息息相关。

数据结构与算法基础知识💧

学会选择,学会放弃。

数据结构

数据存储于内存时,决定了数据顺序和位置关系的便是“数据结构”

数据结构一般分为两个维度:逻辑结构存储结构

  • 逻辑结构

逻辑结构即数据之间的关系,逻辑结构可以分为两种:线性结构非线性结构

线性结构:是一个有序数据元素的集合,其中数据元素之间的关系时一对一的关系,即除了第一个和最后一个元素之外,其他数据元素都是首尾接应的。

常用的线性结构有:栈、队列、链表、线性等。

非线性结构:各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或者多个其他数据元素发生联系。

常见的非线性结构有:二维数组、树等
复制代码
  • 存储结构 逻辑结构指的是数据间的关系,而存储结构是逻辑结构用计算机语言的实现。常见的存储结构有:顺序存储、链式存储、索引存储、散列存储。

算法的设计

计算机擅长告诉执行一些基本命令,但无法执行复杂的命令。此处的"基本命令"指的是"做加法"或者"在指定的内容低智商保存数据"等。 计算机是以这些基本命令的组合为基础运行的,面对复杂的操作,也是通过搭配组合这些基本命令而实现的。

例如,对n个数字进行排序。
    对计算机来说就是复杂的操作,如何设计算法来解决这个排序问题,也就等同于构思如何搭配组合计算机可以执行的那些基本命令来实现这个操作。
复制代码

算法的选择

能解决问题的算法不止一个,当有多个算法可以解决同一个问题时,在算法的评判上,考量的标准也各有不同。

   比如,简单的算法对人来说易于理解,也容易被写成程序,而在运行过程中不需要耗费太多空间资源的算法,就十分适用于内存小的计算机。
   不过,一般来说我们最为重视的是算法的运行时间,即从输入数据到输出结果这个过程所花费的时间。
复制代码

时间复杂度与空间复杂度

时间复杂度和空间复杂度的高低,共同决定着一段代码质量的好坏。

  • 时间复杂度 一个算法的时间复杂度,反映了程序运行从开始到结束所需要的时间。把算法中基本操作重复执行的次数(频度)作为算法的时间复杂度。
  • 空间复杂度 一个程序的空间复杂度是指运行完一个程序所需内存的大小。利用程序的空间复杂度,可以对程序运行所需内存多少,有个预先估计。 一个程序执行时,除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外。还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值