软件,算法

好消息是,计算机是一种通用机器,能够执行任何计算。虽然它只有很少的指令,但执行这些指令的速度却极快,而且它能够很大程度上控制自己的运行。

坏消息是,如果没有人告诉它应该做什么,它就什么都不会做,而且得事无巨细一五一十地告诉它。计算机是“魔法师的学徒”,能够不知疲倦,分毫不差地执行指令,但下达给它的任务书也必须高度精确。

能够让计算机完成某种任务的指令序列通称软件。软件的“软”与硬件的“硬”相对,寓意看不见,摸不着。硬件是有形的:如果失手把计算机掉在脚上,你会喊疼。软件则没有这个问题。

现代系统越来越多地采用通用硬件(如处理器,内存以及与外界相连接的接口),同时靠软件来实现特定的行为。人们普遍认为,软件更便宜,更灵活,比硬件更好修改。

什么是软件?一个通俗的比喻是做菜用的菜谱。菜谱会列出做某个才所需的原材料,烹饪步骤以及预期结果。类似地,程序也要描述待操作的数据,讲清楚要对数据做什么,以及产出什么结果。不过,菜谱与任何程序都不能比,因为它含糊,容易产生歧义。

数学计算必不可少,数据从一个位置被复制到另一个位置,后续的计算取决于之前计算的结果。

算法,就是保证特定计算过程正确执行额一系列步骤,它是计算机科学中的菜谱或纳税申报表,只不过编制得更仔细,更准确,更清楚。算法的每一步都表达为一种基本操作,其和含义都是完全确定的,如“两个数相加”。任何事物都没有歧义,输入数据的性质也是既定的。所有可能的情况都会涵盖,而算法绝不会遇到一种它不知道接下来该做什么的情况。

4.1 线性算法

4.2 二分搜素

4.3 排序

4.4 难题与复杂性

猜你喜欢

转载自blog.csdn.net/qq_21874145/article/details/82715865