概述
通常用C/C++函数来描述算法。算法描述的一般格式如下:
返回值 算法对应的函数名(形参列表)
{ 临时变量的定义
实现由输入参数到输出参数的操作 函数体
其中,.'返回值”通常为bool类型,表示算法是否成功执行;“形参列表”表示算法的参数,由 于算法包含输入和输出,所以形参列表由输入型参数和输出型参数构成;函数体实现算法 的功能。
一个算法通常完成某个单一的功能,算法设计的一般步骤如下:
(1) 分析算法的功能。
(2) 确定算法有哪些输入,将这些输入设计成输入型参数;确定算法有咖些输出,将这 些输出设计成输出型参数。
(3) 设计函数体,完成从输入到输出的操作过程。
A输出型参数的设计
在设计算法时,输入型参数的设计是卜分简单的,那么输出型参数如何设计呢?下面通 过一个示例进行说明。
例如设计一个交换两个整数的算法,编写相应的函数swaplMry)如下:
void swapl (int x, int y)
{ int tmp;
tmp= x; x=y; y= tmp;
}
在该函数中的确实现了两个形参7和的值交换,但调用该算法(也就是执行语句 swapl(Q,。))时发现Q和厶实参值并不会发生交换。出现错误的原因是这里的形参既 是输入型参数,也是输出型参数,而swaplG冒)中仅仅将形参八丁作为输入型参数设计。
改正方法1:采用指针的方式来回传形参的值,将上述函数改为如下。
void swap2(int * x, int { int tmp;
tmp= * x;
*x= * y;
*y=tmp;
}
这样调用该函数的方式改为swap2(M,标),其中,&Q、&b分别是实参q、4的地址, 显然改正后的算法swap2()比较复杂,可读性差。
改正方法2:釆用引用型形参,也就是将输出型形参设计为引用类型形参。
在C++语言中提供了一种引用运算符当建立引用时,程序用另一个已定义的变 量(目标变量)的名字初始化它,从那时起,引用变量作为目标变量的别名使用,对引用变量 的改动实际是对目标变量的改动。例如:
//定义整型变量
第2个语句定义b变量是变量。的引用变量,。也等于4,之后这两个变量同步改变。 引用常用于函数形参中,当采用引用型形参时,在函数调用时会将形参的改变冋传给实 参。利用引用运算符将swaplO改为如下:
void swap(int &x,int &y) //形参前的”&〃符号不是指针运算符,而是引用
( int tmp= x;
x=y; y=tmp;
}
当执行语句swap(o,。)时,形、实参的匹配相当于:
〃x为a的引用 〃y为b的引用
这样,。与z共享存储空间,方与y共享存储空间,因此执行函数后a和。的值发生了交 换。这种改进方式十分简单,所以本书后面均采用这种方式设计算法。
最后
以上就是自然白羊为你收集整理的算法描述的一般格式和设计步骤的全部内容,希望文章能够帮你解决算法描述的一般格式和设计步骤所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复