background image

软件工程程序设计中几种常用算法

的比较研究

   摘要:在计算机科学领域中,软件工程程序设计是一项重要的研究内容,而程序设计的
核心就是算法的选择,最佳的算法不仅能够降低程序的复杂性,而且要能够达到程序设计
的要求。在软件工程中对于程序设计算法的方法有很多种,该文主要对软件工程程序设计的
几种常用算法进行比较研究,从而能够为软件工程程序设计提供一些参照条件。

 

  关键词:软件工程;程序设计;常用算法;比较研究

 

\  随着科学技术的发展,计算机技术呈现出快速发展的状态,随着计算机软件系统的复
杂程度以及规模的扩大,软件的可靠性的问题也日趋增多,在软件工程程序设计中计算方
法也随着增多,下面主要进行分析在软件工程程序设计中分而治之法、贪心法设计、动态规
划法等几种算法的特点以及实现机制进行分析和研究比较。

 

  

 1 算法的概述 

  在计算机中对于算法的描述种类有很多种,其中有自然语言、算法语言以及图形语言和
形式语言等。算法主要是指在有限的步骤内能够解决一个问题的过程。算法的特性主要有以
下几点:确定性、有穷性、可行性以及输入输出这五个重要的特性,其中有穷性主要是指每
一个算法必须在执行的有穷步后结束一个程序。确定性主要是指算法的每一个步骤必须具有
确切的定义。可行性主要是指在算法中每一步都应该是非常基本的算法,并且每一步都能够
精确的计算。输入性主要是指有

0 个或者多个输入值,输出性主要是指有 1 个或者多个输出

[1]。 

  软件工程程序算法在计算机上执行计算的过程中需要有一定的存储空间存放算法所需
要的数据以及描述的程序。在软件工程程序设计中对于不同的算法,其写出的程序在计算机
上进行运行的过程中所需要的空间和时间是不同的,并且针对不同的计算机的运行速度也
是不同的,所以软件工程程序设计中对于判定不同算法的复杂性时,应该注意计算机自身
的问题,从而选择出复杂性最低的算法。

 

  

 2 分而治之算法的研究 

  在计算机科学领域中分而治之方法是软件工程程序设计中一项重要的算法。分而治之主
要是指将一个复杂的问题分为两个或者多个相似或者相同的子系问题,然后将所分的子问
题分为更小的子问题,一直到能够直接求出问题的答案为止,其中原问题的答案就是各个
子问题答案的综合。如果在具体使用分而治之法的过程中,因为子问题的类型大多数与原来
的相同,所以很自然就能够实现递归过程,求出问题的解。在软件工程中采用分而治之的方
法能够解决问题时,可以使用分而治之的设计模式进行解决问题,这种设计模式不仅适合
于用户对这种算法具体深刻了解的用户,以免出现重复性的劳动,提高复用率,而且还适
合于对分而治之思想理解不深的用户,从而能够减轻用户的负担

[2]。 

  

1)分而治之算法的设计模式一般为: 

  其结构如图

1 所示。 

  

2)分而治之算法的应用特点 

  在计算机软件工程程序设计中,分而治之算法的应用是非常繁多的,比如常见的循环
赛日程表、合并排序、大整数乘法、二分搜索技术以及线性时间选择等。应用分而治之算法可
以解决具有以下特征的问题:能够解决规模可以缩小到能够解决的问题;问题具有分解性
能够分解成多个小的并且类似或者相同的问题,并且问题具有子结构性质。问题所能够分解
的各个子问题是之间是相