系统安全的9大Web安全工具
写在前面 可能有些人会吐槽,学算法有什么用,顶多就是去面试大厂的时候能用上,大厂面试算法也只是强中筛强的一个敲门砖而已,我又不去面大厂,不用学它,真的是这样吗? 肯定不是,在计算机行业发展,不管是前端亦或是后端,算法都是进阶的一个绊脚石,可以说不会算法永远也成不了一个合格的高级工程师,想要进大厂确实要会些算法,但是它并不只是为了面试,它和我们的程序是息息相关的,有人说前端不需要算法?你把大名鼎鼎的 虚拟DOM (Virtual DOM) 置于何地,它就是 算法与数据结构 的一种体现,可能又有人会说了,我又不写虚拟DOM。。。嗯,那你总想要赚钱吧,走技术路线想拿高薪,算法是基石 网上有很多算法文章以及课程,说 7 天学会算法数据结构,30 天掌握算法与数据结构等等等等,别傻了,算法没有捷径,只能靠我们一点一点累积,你要做的首先就是相信自己不是天才,其次是每天坚持刷题,时间紧可以一周刷四五题,最好速度是每天一题,后期时间充裕或者熟练了甚至可以一天刷几题,即使很聪明的人在一段时间不接触算法后,还是会忘掉,所以重要的是持续下去 接下来我们来从零开始学习算法吧,如果你未曾刷过算法,这篇文章会带你了解什么是算法,什么是数据结构,在刷算法的同时,我们要明确自己的解法是否足够优质,而判断优质解发会通过时间以及空间两个维度来体现,本文更会重点介绍,这些都是刷算法之前需要必备的知识,如果能为你的算法之路带来启蒙,那真是太棒了,十分荣幸,如果你已经了解了这些知识,那么不妨快速阅读下,看看是否能为你的算法知识做些扩充,当然如果有错误的地方,你也可以为我指引,更是十分荣幸 什么是数据结构 数据结构其实就是是程序存储组织数据的方式,一个数据结构是由程序中的数据元素按照某种逻辑关系组织起来的,是若干个数据元素的组合 数据结构是程序中处理数据的基本单位,在程序中作为一个整体来使用 例如一个数字 1 或者一个字符 A,它是一种数据结构 例如一个日期 2020年12月14日,它由年月日这 3 种格式组成,也是一种数据结构 例如一个数组 [1, 'a', '2020年12月14日'],它是由数字、字符、日期格式组合而成,也是一种数据结构 通俗来说,用一定格式组成的数据都是数据结构,我们比较常见的数据结构有字符串、数组、对象、堆、栈、链表、树、哈希表等等,你可能对着其中的一些数据结构并不了解,不要担心,你并不需要立刻知道它们都是什么,对于前端来说,我们使用 JavaScript 这个令我们又爱又恨的语言,它本身就存在的数据结构很少,那么对于像链表、树等等这些结构都是通过对象来模拟的,这点要先知道 在许多程序设计当中,数据结构的选择是一个基本的设计考虑因素,系统实现的困难程度和系统构造的质量都严重依赖于是否选择了最优的数据结构,选择最优的数据结构能够有效的提高运行的效率和节约存储空间的使用,但是要知道,没有十全十美的数据结构,每种数据结构都有局限性同样也有优点,要根据需求来选择合适的数据结构 什么是算法 什么是算法,我们都知道 1+2+3=6,为什么等于 6 呢,你可能会说,1 加 2等于 3,两个 3 相加等于 6,这是小学生都会的数学常识,它就是广义上的算法 算法其实就是解决一个问题的完整步骤描述,是指完成一个任务准确而完整的步骤描述 算法的设计很多时候需要取决于数据结构,而算法的实现更依赖于采用的数据结构 提出一个问题的算法是一个从抽象到具体的过程
了解了什么是算法之后,我们来看时间和空间复杂度,衡量不同算法之间的优劣我们通常从两个维度来考究
接下来就开始逐步剖析时间和空间复杂度了,先说时间复杂度 时间复杂度 在说时间复杂度之前,我们首先要理解一个概念即代码执行次数,也可称之为语句频度或时间频度,用 T(n) 表示
我们用例子来一步一步阐述,首先我们来看函数 fn1 (编辑:通化站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |