1 回答

TA貢獻1833條經(jīng)驗 獲得超4個贊
簡單理解,時間復雜度就是執(zhí)行語句被調(diào)用了多少次。
(1)如果只調(diào)用了一次,如:
x=5;
if(x<-4)
{x=x+4;}
else
{x=x+3;}
在大括號中的內(nèi)容,只會調(diào)用一個語句,那么O(n)=1;
(2)如果調(diào)用了兩次,如:
x=5;
if(x<-4)
{x=x+4;}
else
{x=x+3;}
x=x+56;
在大括號中的內(nèi)容,只會調(diào)用一個語句,但是在最后,還有一個計算公式要調(diào)用語句;總共加起來就是調(diào)用2次。那么O(n)=2;
(3)用1個FOR循環(huán)調(diào)用
for(x=0;x<n;x++)
{x=x+1;}
x會從0到n-1循環(huán),執(zhí)行的語句就是將當前x值加入新的x中,總共調(diào)用n次;那么O(n)=n;
(4)用2個嵌套FOR循環(huán)調(diào)用
for(x=0;x<n;x++)
{
for(y=1;y<=n;y++)
{x=x+y;}
}
遇到嵌套循環(huán),可以先將外面的FOR語句中的變量固定為初始值x=0,主要看里面的FOR語句的時間復雜度,很明顯,里面語句執(zhí)行次數(shù)是從1到n總共調(diào)用n次,O(n)=n;這還只是x=0時的調(diào)用。x可以從0到n-1,共n次。每次調(diào)用都會執(zhí)行n次調(diào)用y的情況,因此,執(zhí)行語句x=x+y;總共會調(diào)用n*n次。O(n)=n^2。
數(shù)執(zhí)行語句的執(zhí)行次數(shù),就是時間復雜度。注意:
(1)找到正確的執(zhí)行語句。
(2)for循環(huán)中的初始值和終止值。
for(i=0;i<n;i++) i值變化是從0到n-1,共n次。
for(i=0;i<=n;i++) i值變化是從0到n,共n+1次。
(3)注意for循環(huán)的調(diào)用順序,從里面到外面進行的。
- 1 回答
- 0 關注
- 688 瀏覽
添加回答
舉報