数据结构与算法重学~保证全~包会(我也在初始学习阶段~)

开题:如何才能围绕系统单复杂性选择最合适的解决方案呢?

一方面是对所学算法的选型

另一方面是对所用数据结构的选型  刷题只是形式,更重要的是掌握算法思维和原理并用以解决实际的编码问题

学习方法:

  • 重视方法论(程序优化的通用方法论, 了解到数据结构和算法在程序优化中的作用)
  • 内容精简,重点突出(高频使用的数据结构就那么几个,其他的往往是这些数据结构的组合跟变形)
  • 学习收获快(找准重点,学就完了)

下面有五个模块用来介绍数据结构算法:

 

模块一:代码效率优化方法论01|复杂度:如何衡量程序运行的效率?

当你在大数据结构中开发时吗,你一定遇到过程序执行一整天或者是好几天的情况,或者是执行过程中电脑死机的情况。

如果这个效率低下系统是离线的,那么它会让开发周期、测试周期变长;如果它是在线的,那么它随时具有时间爆炸或者内存爆炸的可能性。衡量代码的运行效率是一项非常重要的基本功。

什么是复杂度么?

复杂度是衡量代码运行效率的重要的度量因素。计算机通过一个个程序去执行计算任务,也就是对输入数据进行加工处理,并最终得到结果的过程。每个程序都是由代码构成的。可见,编写代码的核心就是要完成计算。但对于同一个计算任务,不同计算方法得到结果的过程复杂程度是不一样的,这对你实际的任务处理效率就有了非常大的影响。

举个例子,你要在一个在线系统中实时处理数据。假设这个系统平均每分钟会新增 300M 的数据量。如果你的代码不能在 1 分钟内完成对这 300M 数据的处理,那么这个系统就会发生时间爆炸和空间爆炸。表现就是,电脑执行越来越慢,直到死机。因此,我们需要讲究合理的计算方法,去通过尽可能低复杂程度的代码完成计算任务。

那提到降低复杂度,我们首先需要知道怎么衡量复杂度。而在实际衡量时,我们通常会围绕以下2 个维度进行。首先,这段代码消耗的资源是什么。一般而言,代码执行过程中会消耗计算时间和计算空间,那需要衡量的就是时间复杂度和空间复杂度。

我举一个实际生活中的例子。某个十字路口没有建立立交桥时,所有车辆通过红绿灯分批次行驶通过。当大量汽车同时过路口的时候,就会分别消耗大家的时间。但建了立交桥之后,所有车辆都可以同时通过了,因为立交桥的存在,等于是消耗了空间资源,来换取了时间资源。

其次,这段代码对于资源的消耗是多少。我们不会关注这段代码对于资源消耗的绝对量,因为不管是时间还是空间,它们的消耗程度都与输入的数据量高度相关,输入数据少时消耗自然就少。为了更客观地衡量消耗程度,我们通常会关注时间或者空间消耗量与输入数据量之间的关系。

好,现在我们已经了解了衡量复杂度的两个纬度,那应该如何去计算复杂度呢?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值