标签:运算 引用 解决 保留 pre 高效 计算 image code
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作
C++语言中提供引用运算符“&”用于描述输出型参数。
int a=10; int &b=a;
a、b两个变量共享内存空间——>a、b同步发生改变
示例:交换两个整数的算法。
编写一个函数swap1(x,y):
void swap1(int x,int y) { int tmp; temp=x; x=y; y=tmp; }
当执行swap1(a,b)时,a和b的实参值不会发生交换
原因:x、y既是输入型参数,也是输出型参数
改正方法1:采用指针的方式来回传形参的值
void swap2(int *x, int *y) { int tmp; tmp=*x; //将x的值放在tmp中 *x=*y; // 将x所指的值改为*y *y=tmp; // 将y所指的值改为tmp }
交换形参x和y所指向的值 函数调用变为swap2(&a,&b),较为复杂
改正方法2:采用引用型形参,将输出型形参改为引用类型。
void swap(int &x, int &y) //形参前的“&”符号不是指针运算符 { int tmp=x; x=y; y=tmp; }
交换形参x和y的值
执行语句swap(a,b)时,形参实参的匹配为:
int &x=a; //a为x的引用
int &y=b; //b为y的引用
这样,ax共享存储空间,by共享存储空间,因此执行函数后ab的值发生了交换。——>简单
算法时间复杂度:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,就是算法的时间量度,记作:T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。
推导大O阶:
算法空间复杂度:量度一个算法运行过程中临时占用的存储空间的大小。S(n)=O(g(n))
一般更多考虑时间复杂度
标签:运算 引用 解决 保留 pre 高效 计算 image code
原文地址:http://www.cnblogs.com/jtyy/p/7190793.html