算法循环
❶ 为啥算法是有限的,而程序可以是无限的懂的来
首先一款程序是由N个算法集合而成,用整体某个架构作为框架,框架内集成N个算法最终打包成一个程序。
而算法只是一些指令,是指对解决问题方案的一个描述。用系统的方法描述解决问题的机制。
任何一个程序,都是N多个算法循环而成,每一个算法都负责单独其中的一个操作指令,通俗的解释为:一辆汽车,邮箱烧油才能让汽车有动力,汽车才会行走,假设理论上你邮箱油是无线充足的,那么汽车可以永远跑下去。 但是汽车必须定期要加油。同样,程序可以无线循环执行下去,只要服务器正常运行,执行完毕后可以通过某些触发器继续让程序按照人需要的方面去无限执行下去,但是里面可能涉及到核心算法,循环算法等等,通过这些算法结合在一起才能让程序循环执行。
就好比世上永远不会有永动机,同样,算法是核心基础,程序是最终结果。要想程序无限运行,必须每个算法各司其职按部就班执行。
❷ 算法的三种基本结构是
算法有顺序结构、条件分支结构、循环结构三种基本逻辑结构。
1、顺序结构:顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的。
它是任何一个算法都离不开的一种基本算法结构。顺序结构在程序框图中的体现就是用流程线将程序框自上而下地连接起来,按顺序执行算法步骤。
2、条件结构:
条件结构是指在算法中通过对条件的判断,根据条件是否成立而选择不同流向的算法结构。
条件P是否成立而选择执行A框或B框。无论P条件是否成立,只能执行A框或B框之一,不可能同时执行A框和B框,也不可能A框、B框都不执行。一个判断结构可以有多个判断框。
3、循环结构
在一些算法中,经常会出现从某处开始,按照一定条件,反复执行某一处理步骤的情况,这就是循环结构,反复执行的处理步骤为循环体,显然,循环结构中一定包含条件结构。循环结构又称重复结构,循环结构可细分为两类:
一类是当型循环结构,如下左图所示,它的功能是当给定的条件P成立时,执行A框,A框执行完毕后,再判断条件P是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次条件P不成立为止,此时不再执行A框,离开循环结构。
另一类是直到型循环结构,如下右图所示,它的功能是先执行,然后判断给定的条件P是否成立,如果P仍然不成立,则继续执行A框,直到某一次给定的条件P成立为止,此时不再执行A框,离开循环结构。
(2)算法循环扩展阅读
共同特点
(1)只有一个入口和出口
(2)结构内的每一部分都有机会被执行到,也就是说对每一个框来说都应当有一条从入口到出口的路径通过它,如图中的A,没有一条从入口到出口的路径通过它,就是不符合要求的算法结构。
(3)结构内不存在死循环,即无终止的循环。
❸ 算法的正确性证明方法一: 循环不变量
在之前的一篇文章里写到 算法的正确性 的概念以及它的作用,下面就来写写循环不变量在算法的正确性证明中的用法。
在使用循环的算法里,可以通过循环不变量证明其正确性。
所谓循环不变量是指一种在整个循环过程中保持不变的性质,它必须在以下3种情况下均保持不变,且该性质源困在循环终止后能证明算法的正确性。
接下来就 归并排序(Merge sort) 中的 merge 函数来说明一下循环不变量
先解释一下这个函数的作用,sld 和 srd 为已排序数组,大小分别为 lc 和 rc,循环 tc (lc + rc) 次把它们的元素进行比较并复制到新分配的数组 md 中,那要怎么证明这个算法的正确性呢。
让我们先设定循环不变量,然后看8-18行的循环能否在以上3种情况都满足这个循环不变量。
结束时循环不变量给了我们一个有用信息,此迟氏时 md 已经把 sld 和 srd 中全部元素合并排序了, 从雹旦念而证明了算法的正确性。