算法基础

参考《算法 第四版》。很多都是抄文字,because I am just a newbie。后期在实践的过程中不断完善。

算法:

编写一段计算机程序一般都是实现一种已有的方法来解决某个问题。这种方法大多和使用的编程语言无关(更多的是一种思想)。是这种方法而非计算机程序本身描述了解决问题的步骤。

换个道理,个人认为算法可以应用于任何解决问题的地方,比如运筹学可以解决实际问题。这个问题可能具有局限性。

我们用算法来描述一种有限、确定、有效的并适合用计算机程序来实现的解决问题的方法。算法是计算机科学的基础,是这个领域研究的核心。

要定义一个算法,我们可以**用自然语言描述解决某个问题的过程或是编写一段程序来实现这个过程。**如欧几里得算法——寻找两个数的最大公约数:在这里插入图片描述
在这里插入图片描述
我们关注的大多数算法都需要适度地组织数据,而为了组织数据就产生了数据结构。

学习算法的主要原因是因为它能节约非常多的资源,设计优良的算法甚至可以将程序运行的速度提高数百万倍(因为人类目前科技的进步更多的依赖计算机的计算能力,好吧这句话是我自己说的,懒得去证明是不是了,但是必须强调计算机的作用是无可比拟的,因为计算机可以进行庞大数据的计算,因为数据太太太太庞大,所有尽管我们可以小小的修正一下过程,最终的效果将会影响非常大,所以尽管有时候大家会觉得,至于那么抠算法抠的那么紧吗,就像 y = 0.001 x 一样,如果是百万级的数量,如果直线延伸百万级的数量,y 的值会很大很大,如果我们仅仅对斜率做一点小小的改动,如 y = 0.0009 x ,那么对最终的影响值很大,算法就像这里的斜率一样,可能它将时间复杂度从 O(n2) 改动到 O(nlogn)看起来改动很小,但是将 n 的数量扩展到百万级别,影响就会很大 了 )

在编写庞大或者复杂的程序时,理解和定义问题、控制问题的复杂度和将其分解为更容易的子问题需要大量的工作。很多时候,分解后的子问题所需的算法实现起来都比较简单,但是在大多数情况下,某些算法的选择是非常关键的,因为大多数系统资源都会消耗在它们身上。本书的焦点就是这类算法这段话需要反复的去体会

为一项任务选择最合适的算法是困难的,这可能会需要复杂的数学分析。计算机科学中研究这种问题的分支叫做算法分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值