到底什么是算法?怎么评价(时间&空间复杂度)?

学编程其实就是为了让计算机帮助我们解决各种各样的问题。

 

任何问题的解决都有一定的方法和步骤,计算机解决问题的处理步骤我们称之为算法

 

 

在计算机编程的过程中,提到“算法”总是让人觉得很深奥,很难理解到底什么是算法?

其实在现实生活中我们经常会用“算法”的思想在解决一些问题,最常见的就是根据菜谱做菜。

 

菜谱其实就是记录了可以做出各色各样美味菜品的方法步骤。

比如:制作红烧肉的菜谱,会把制作红烧肉所必需的材料及用量都标注清楚,并且把烹制的过程、每一步需要的时间等都详细记录下来。

“算法”就是能让程序员编写出可靠、高效的计算机程序的“菜谱”。

 

 

编程是为了让计算机解决特定的问题,编程之前首先需要明确计算机解决该问题的具体步骤,这个处理步骤就是编写该程序所需要的“算法”。

 

当然,解决一个问题可以用不同的方法和步骤,所以针对同一问题的算法也有多种。

 

概念:

算法被定义为一个运算序列。

这个运算序列中的所有运算定义在一类特定的数据模型上,并以解决一类特定问题为目标。


 

 

例子

 

问题:从上海到北京,应该怎么去?

 

解决方法:我们可以坐飞机,可以坐高铁,也可以坐长途汽车。不同的解决方案所带来的时间成本、金钱成本是不一样的。比如坐飞机用的时间最少,但费用最高,坐长途汽车费用低,但花费时间长。如果我们选择一个折中的方案,花费时间不算太长,价格也不算太贵,那我们可以选择坐高铁或火车。

 

问题:如何计算 1 + 2 + 3 + ... + 100 的值?

 

解决方法:我们可以选择用计算器从 1 开始,不断向右依次加上 2,再加上 3,再加上 ... 直到加到 100,得出结果为 5050。也可以选择直接根据高斯求和公式 和 = (首项 + 末项) * 项数,直接算出结果为 (1+100)∗100 / 2=5050 。

 

以上2个例子都可以看做是算法。从上海去北京的方法可以看做是算法,对 1~100 的数进行求和的计算方法也可以看做是算法。并且从这两个例子可以看出对于一个特定的问题,往往有着不同的算法。

 

 


重要特性

 

  1. 有限性:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值