引言:时间复杂度是判断一个程序算法是否可行的方法,在多个同一个问题的算法中,可以通过时间复杂度来挑选优秀的算法
1、需要理解要点:问题的规模和语句频度,数量级O()
问题的规模:问题的规模指的是算法求解问题输入量的多少,可以用n表示
语句频度:一条语句重复执行的次数
在数据结构中,把一个算法的时间复杂度用数量级'O()'来表示,它不是一个确定值,只是一个数量级,例如1,n,n^2等
2.语句频度最高的,其数量级一般为时间复杂度,如下:
int a =0;
for(int i=0;i<=n;i++){ //语句频度为(n+1)
for(int j=0;j<=n;j++){ //语句频度为 n*(n+1)
a++; //语句频度为 n^2
}
}
以上时间复杂度为O(n^2),因为最大的语句频度的数量级就是n^2
int x = n;
int y = 0;
while(x>=(y+1)*(y+1)){
y++;
}
一开始可能不知道怎么下手,但其实只要算出语句频度最高的那个数量级便可,这里的话y++语句频度最高,并且在x>=(y+1)*(y+1)时执行,因为y每次都是递增1的,因此
n=(y+1)*(y+1); y= √n -1
所以时间复杂度为O(√n)