算法是利用计算机解决问题的处理步骤,简而言之,
什么是算法?
在计算或其他解决问题的操作中要遵循的一个过程或一组规则。 因此,算法是指一组规则/指令,这些规则/指令逐步定义了如何执行工作以获得预期结果。
算法有助于在编程中完成一项任务以获得预期的输出。算法与语言无关,即它们只是可以用任何语言实现的简单指令,但输出将与预期相同。
算法就是解决问题的步骤。
算法不仅仅用于计算机的数据处理,现实世界中的各种问题也需要结合算法的概念来解决,其中,具有代表性的就是烹饪中用到的食谱,食谱是各种美味料理的制作方法,需要用一定的步骤表示出来。
算法是古老智慧的结晶,是程序的范本,学习算法才能编写出高质量的程序。
算法的特征
并非所有用于编程的书面指令都是算法。 为了使某些指令成为算法,它必须具有以下特征:
- 清晰无歧义:算法应该清晰无歧义。 它的每一个步骤都应该在各个方面都清楚,并且必须只有一个含义。
- 明确定义的输入:如果算法说要接受输入,那么它应该是明确定义的输入。
- 明确定义的输出:算法必须明确定义将产生什么输出,并且也应该明确定义。
- 有限性:算法必须是有限的,即它不应该以无限循环或类似的方式结束。
- 可行:算法必须简单、通用和实用,以便可以在可用资源上执行。 它不能包含一些未来的技术或任何东西。
- 语言独立:设计的算法必须与语言无关,即它必须只是可以用任何语言实现的简单指令,但输出将与预期相同。
算法必须具备两个重要条件:
有效性:算法必须要为给定的任务给出正确的结果,即,有满足条件的输入值时,此算法一定要保证正常工作(返回正确的输出值)。表明算法有效性的方法之一就是断点。断点设置在算法的任意位置上,判断此位置是否满足给出的条件,即,程序是否正确运行。
终止性:算法中没有永远反复执行,即,没有无限循环,且不返回答案的情况。算法终止性可以用反复处理结束条件的判断变量,或经过有限次的反复一定能到达结束条件等方法证明。
算法的优点:
- 容易理解;
- 算法是对给定问题的解决方案的逐步表示;
- 在算法中,问题被分解为更小的部分或步骤,因此程序员更容易将其转换为实际程序。
算法的缺点:
- 编写算法需要很长时间,因此很耗时。
- 分支和循环语句很难在算法中显示。
为什么要学习算法?
学习算法的同时能提高自己的编程能力。一个好的算法是编写程序的模型,因为它能创造计算机程序,其中还包含了程序的精髓。学过算法的人写出的程序和没学过算法的人写出的程序有明显的差距。要写出既能正确执行又能提高效率的好程序,算法的学习是不可或缺的。
算法的学习类似于学习游戏攻略,有了攻略就能轻松取得游戏的成功。
算法有哪些例子?
给计算机编程带来方便的算法种类繁多,如技术计算(实现技术计算的算法,迪杰斯特拉法,素数,最大公约数)、排序(冒泡、选择、归并、希尔等)、查找(线性、二分法)、字符串模式匹配(KMP算法)。
算法的基础——结构化程序设计的思想
用计算机编写程序时,为了提高应用程序的效率,把设计上的错误最小化,有一种编程思想叫做结构化程序设计。
结构化程序设计中所有的处理流程,可以用以下三种结构组合而成:
顺序结构:按照所述顺序处理
选择结构:根据判断条件改变执行流程
循环结构:当条件成立时,反复执行给定的处理操作