数据结构(1) 时间复杂度

引言:时间复杂度是判断一个程序算法是否可行的方法,在多个同一个问题的算法中,可以通过时间复杂度来挑选优秀的算法

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章