上一讲C++的输入输出与判断经过练习,就可以写简单的程序了。但是在信奥赛中,几乎没有不需要使用循环的。因此,循环是C++的一门必学课。
时间复杂度
时间复杂度是初赛中一个重要的考点。何为时间复杂度?就是程序执行语句的速度。带有循环的语句,时间复杂度往往会由输入数据决定。时间复杂度用O()符号来表示,读作
【大O】。我们在计算时间复杂度时,一般只会计算循环的时间复杂度,对每个字母取最高次数。
#include<iostream>
using namespace std;
int main(){int n;cin >> n;for (int i=1;i<=n;i++){for (int j=1;j<=n;j++)cout << j << " ";cout << endl;}return 0;
}
- 在这串代码中,我们从这个双重循环入手。根据乘法原理,这个循环执行了n*n次。所以时间复杂度为O(N²)
下面列举了几个常用的时间复杂度:
- O(1)用数学方法解决。
- O(logN)对数阶
- O(N)线性阶,算是比较优秀的时间复杂度。
- O(NlogN)
- O(N²)平方阶,比较劣质,不容易拿到满分。
循环语句
循环语句用的关键字是for。一般的循环语句会有三条语句,下为模版:
for(变量初始化;循环结束条件;变量变化){
代码
}
一般的循环变量名会定义为i,类型为int。至于循环条件,自己定。变量的变化根据实际情况来定。总之,循环属于比较灵活的语句,大部分都需要自己理解。那么下面这条语句是什么意思呢?
for (int i=1;i<=10;i++)
第一条语句定义了一个变量i,他的初始值是1。
接下来到第二条语句,判断I是否小于10,也就是1是否小于10。如果小于10,就结束了。
执行完内部代码之后,再执行第三条语句,i自加,可以理解为i+=1
回到第一条语句。
循环的用途很多,主要用于枚举以及一些特殊算法。在考试时,往往和时间复杂度一起出现。需要分辨好为什么要用循环,怎么用循环,才可以做对题目!