重学数据结构与算法

课程简介:

 欢迎进入第一课时的学习,前面我说到了咱们这个专栏的目标是想教会你利用数据结构的知识,建立算法思维,并完成代码效率的优化。为了达到这个目标,在第一节课我们先来讲一讲如何衡量程序运行的效率。当你在大数据环境中开发代码时,你一定遇到过程序执行好几个小时甚至好几天的情况,或者是执行过程中电脑几乎死机的情况。如果这个效率低下的系统是离线的,那么它会让我们的开发周期、测试周期变得很长。
如果这个效率低下的系统是在线的,那么它随时具有时间爆炸或者内存爆炸的可能性。因此,衡量代码的运行效率对于一个工程师而言是一项非常重要的基本功,本节课我们就来学习程序运行效率相关的度量方法,复杂度是衡量代码运行效率的重要的度量因素。
在介绍复杂度之前,有必要先看一下复杂度和计算机实际任务处理效率的关系,从而了解降低复杂度的必要性,计算机通过一个个程序去执行计算任务,也就是对输入数据进行加工处理并最终得到结果的过程。
每个程序都是由代码构成的,可见编写代码的核心就是要完成计算。但对于同一个计算任务,不同计算方法得到结果的过程,复杂程度是不一样的,这对你实际的任务处理效率就有了非常大的影响。
举个例子:你要在一个在线系统中实时处理数据,那假设这个系统平均每分钟会新增300兆的数据量,如果你的代码不能在一分钟内完成对这300兆数据的处理,那么这个系统就会发生时间爆炸和空间爆炸,表现就是电脑执行越来越慢,直到死机。因此我们需要讲究合理的计算方法去通过尽可能低复杂程度的代码完成计算任务。
那提到降低复杂度,我们首先需要知道怎么衡量复杂度,而在实际衡量时,我们通常会围绕以下两个维度进行,首先,这段代码消耗的资源是什么?一般而言,代码执行过程中会消耗计算时间和计算空间,那需要衡量的就是时间复杂度和空间复杂度。我举一个实际生活当中的例子,某个十字路口没有建立交桥时,所有车辆通过红绿灯分批次行驶通过,当大量汽车同时过路口的时候,就会分别消耗大家的时间,但建了立交桥之后,所有车辆都可以同时通过了,因为立交桥的存在,等于是消耗了空间资源来换取了实践资源。
其次,这段代码对于资源的消耗是多少,我们不会关注这段代码对于资源消耗的绝对量,因为不管是时间还是空间,它们的消耗程度都与输入的数据量高度相关,输入数据少时,消耗自然就少。为了更客观的衡量消耗程度,我们通常会关注时间或者空间消耗量与输入数据量之间的关系。

课程截图:

课程目录:

01复杂度:如何衡量程序运行的效率?.mp4
02数据结构:将“昂贵”的时间复杂度转换成“廉价”的空间复杂度.mp4
03增删查:掌握数据处理的基本操作,以不变应万变.mp4
04如何完成线性表结构下的增删查?.mp4
05栈:后进先出的线性表,如何实现增删查?.mp4
06队列:先进先出的线性表,如何实现增删查?.mp4
07数组:如何实现基于索引的查找?.mp4
08字符串:如何正确回答面试中高频考察的字符串匹配算法?.mp4
09树和二叉树:分支关系与层次结构下,如何有效实现增删查?.mp4
10哈希表:如何利用好高效率查找的“利器”?.mp4
11递归:如何利用递归求解汉诺塔问题?.mp4
12分治:如何利用分治法完成数据查找?.mp4
13排序:经典排序算法原理解析与优劣对比.mp4
14动态规划:如何通过最优子结构,完成复杂问题求解?.mp4
15定位问题才能更好地解决问题:开发前的复杂度分析与技术选型.mp4
16真题案例(一):算法思维训练.mp4
17真题案例(二):数据结构训练.mp4
18真题案例(三):力扣真题训练.mp4
19真题案例(四):大厂真题实战演练.mp4
20代码之外,技术面试中你应该具备哪些软素质?.mp4
21面试中如何建立全局观,快速完成优质的手写代码?.mp4
加餐课后练习题详解.mp4
结束语勤修内功,构建你的核心竞争力.mp4
开篇词数据结构与算法,应该这样学!.mp4

下载权限

查看
  • 免费下载
    评论并刷新后下载
    登录后下载

查看演示

  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余
编程与开发

Java 性能优化实战 21 讲

2022-4-19 8:15:47

最新更新编程与开发

大数据安全技术学习:安卓应用安全SO进阶培训班

2022-4-20 13:46:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索