- 有穷性:在有穷步之后结束,算法能够停机
- 确定性:无二义性
- 可行性:可通过基本运算有限次执行来实现,也就是算法中每一个动作能够被机械地执行。
- 有输出:有数据处理
- 有输入:有数据处理
运算功能描述---->>>基于存储结构--->>>运算功能实现==算法 算法设计目标
- 确定性:要求算法能够正确地执行预先规定的功能和性能要求。
- 可使用性:要要求算法能够很方便的使用
- 可读性:算法应该易于使人理解,也就是可读性好
- 健壮性:要求算法具有很好的容错性
- 高效率与低存储量需求性:通常算法的效率主要指算法的执行时间,算法存储量指的是算法执行过程中所需的最大存储空间。
返回值 算法对应的函数名(形参列表) { 临时变量的定义; 实现由输入参数到输出参数的 *** 作 ...... }//函数体
其中,返回值通常为bool类型,表示算法是否成功执行,形参列表表示算法的参数,由于包含算法的输入和输出,所以形参列表由输入型参数和输出型参数构成;函数实现算法的功能。
一个算法通常完成某个单一的功能,算法设计的一般步骤如下:
- 分析算法的功能
- 确定算法有哪些输入,将这些输入设计成输入型参数;确定算法有哪些输出,将这些输出设计成输出型参数
- 设计函数体,完成从输入到输出的 *** 作过程
首先我们要设计的是两个值进行交换的算法设计
void swapl(int x,int y) { int tmp; tmp=x;x=y;y=tmp; }
在函数体中实现了x,y的值进行交换,但是调用该算法swapl(a,b)时发现传参数a,b的值并没有进行交换。出现错误的原因是这里的形参x,y即是输入型参数也是输出型参数,而swapl(x,y)中仅将形参x,y作为输入型参数设计。
改正方法1:采用指针的方式来回传形参的值,将上述函数改为乱下:
void swapl2(int * x,int * y) { int tmp; tmp=* x; //将x所指的值放在tmp中 * x=* y; //将x所指的指改为y所指的值 * y=tmp; //将y所指的值改为tmp }
改正方法2:采用引用型形参,也就是将输出型形参设计为引用类型形参
在C++语言中提供了一种引用运算符“&”。
void swapl3(int & x,int & y) { int tmp; tmp=x; //将x所指的值放在tmp中 x= y; //将x所指的指改为y所指的值 y=tmp; //将y所指的值改为tmp } 但执行语句swapl3(a,b)时,形、实参的匹配相当于: ```c int & x=a; //x为a的引用 int & y=b; //y为b的引用
这样,a与x共享存储空间,b与y共享存储空间,因此执行函数后a和b的值发生了交换。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)