栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

学《数据结构》越学越聪明--第一章》》》绪论二

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学《数据结构》越学越聪明--第一章》》》绪论二

算法及其描述
1.2.1什么是算法 对特定问题求解的一种描述,它是指令的有限序列 算法的重要性
  1. 有穷性:在有穷步之后结束,算法能够停机
  2. 确定性:无二义性
  3. 可行性:可通过基本运算有限次执行来实现,也就是算法中每一个动作能够被机械地执行。
  4. 有输出:有数据处理
  5. 有输入:有数据处理
通过把 基于存储结构的运算实现的步骤或过程称为 算法
运算功能描述---->>>基于存储结构--->>>运算功能实现==算法 算法设计目标
  1. 确定性:要求算法能够正确地执行预先规定的功能和性能要求。
  2. 可使用性:要要求算法能够很方便的使用
  3. 可读性:算法应该易于使人理解,也就是可读性好
  4. 健壮性:要求算法具有很好的容错性
  5. 高效率与低存储量需求性:通常算法的效率主要指算法的执行时间,算法存储量指的是算法执行过程中所需的最大存储空间。
算法描述 通常用C/C++来描述算法,格式如下:
返回值  算法对应的函数名(形参列表)
{
临时变量的定义;
实现由输入参数到输出参数的操作
......
}//函数体

其中,返回值通常为bool类型,表示算法是否成功执行,形参列表表示算法的参数,由于包含算法的输入和输出,所以形参列表由输入型参数和输出型参数构成;函数实现算法的功能。
一个算法通常完成某个单一的功能,算法设计的一般步骤如下:

  1. 分析算法的功能
  2. 确定算法有哪些输入,将这些输入设计成输入型参数;确定算法有哪些输出,将这些输出设计成输出型参数
  3. 设计函数体,完成从输入到输出的操作过程
输出型参数的设计 在算法设计时输入型参数非常好设置,那么输出型参数该如何设计呢?我们举例说明一下:
首先我们要设计的是两个值进行交换的算法设计
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的值发生了交换。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330001.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号