算法的概述在计算机中对于算法的描述种类有很多种,其中有自然语言、算法语言以及图形语言和形式语言等。算法主要是指在有限的步骤内能够解决一个问题的过程。算法的特性主要有以下几点:确定性、有穷性、可行性以及输入输出这五个重要的特性,其中有穷性主要是指每一个算法必须在执行的有穷步后结束一个程序。确定性主要是指算法的每一个步骤必须具有确切的定义。可行性主要是指在算法中每一步都应该是非常基本的算法,并且每一步都能够精确的计算。输入性主要是指有0个或者多个输入值,输出性主要是指有1个或者多个输出值。软件工程程序算法在计算机上执行计算的过程中需要有一定的存储空间存放算法所需要的数据以及描述的程序。在软件工程程序设计中对于不同的算法,其写出的程序在计算机上进行运行的过程中所需要的空间和时间是不同的,并且针对不同的计算机的运行速度也是不同的,所以软件工程程序设计中对于判定不同算法的复杂性时,应该注意计算机自身的问题,从而选择出复杂性最低的算法。分而治之算法的研究在计算机科学领域中分而治之方法是软件工程程序设计中一项重要的算法。
分而治之主要是指将一个复杂的问题分为两个或者多个相似或者相同的子系问题,然后将所分的子问题分为更小的子问题,一直到能够直接求出问题的答案为止,其中原问题的答案就是各个子问题答案的综合。如果在具体使用分而治之法的过程中,因为子问题的类型大多数与原来的相同,所以很自然就能够实现递归过程,求出问题的解。在软件工程中采用分而治之的方法能够解决问题时,可以使用分而治之的设计模式进行解决问题,这种设计模式不仅适合于用户对这种算法具体深刻了解的用户,以免出现重复性的劳动,提高复用率,而且还适合于对分而治之思想理解不深的用户,从而能够减轻用户的负担。分而治之算法的设计模式一般为:其结构如图1所示。分而治之算法的应用特点在计算机软件工程程序设计中,分而治之算法的应用是非常繁多的,比如常见的循环赛日程表、合并排序、大整数乘法、二分搜索技术以及线性时间选择等。应用分而治之算法可以解决具有以下特征的问题:能够解决规模可以缩小到能够解决的问题;问题具有分解性能够分解成多个小的并且类似或者相同的问题,并且问题具有子结构性质。