4.函数
- 用函数来缩短代码
- 被传入函数的参数是否会改变
//1
int a;
void f(int x)
{
++x;
}
//2
void f(int &x)
{
++x;
}
如下
//调用代码
a=0;
f(a);
对于1中a的值仍然为0,对于2中a中的值为1
在2中相当于a取代了x的位置,函数f()就是在对a本身进行操作,执行完调用代码后,a的值由0变为1.
上面2中讲到的是针对普通变量的"引用型",如果传入的变量是指针型变量,则如下3:
//3
void f(int *&x)
{
++x;
}
下面是数组作为参数的情况
//一维数组作为参数的函数声明方法
void f(int x[],int n)
{
...;//其中n用来说明数组元素的个数,并不是指数组总长度
}
//二维数组作为参数的函数声明方法
void f(int x[][maxSize],int n)
{
...;
}
注:如果函数的参数是二维数组,数组的第一个中括号内不需要写上数组长度,而第二个中括号内必须写上数组长度。
所传入的数组的二维长度也得是maxSize,否则出错。
可以理解为只要数组作为参数,都是引用型
参数引用型的其他例子
注:当参数自身改变时需要用引用型
//因为L本身要发生变化,所以要用引用型
void insert(Sqlist &L,int x)
{
int p,i;
p=LocateElem(L,x);
for(i=L.length;i>=p;--i)
{
L.data[i+1]=L.data[i];
}
L.data[p]=x;
++(L.length);
}
- 有返回值的函数
5.算法时间复杂度分析
将算法中基本操作的执行次数作为算法时间复杂度的度量
各种时间复杂度常用的比较关系:
时间复杂度计算总结:
1).确定算法中的基本操作以及问题的规模。
2).根据基本操作执行情况计算出规模n的函数f(n),并确定时间复杂度为T(n)=O(f(n))中增长最快的项/此项的系数。
6.其他知识补充
未完待续…