c學習筆記01 c資料結構 時間複雜度和空間複雜度

2021-10-21 15:12:22 字數 1702 閱讀 2743

事前分析估算方法:在電腦程式編寫前,依據統計方法對演算法進行估算

由此可見,拋開這些與計算機硬體、軟體有關的因素,乙個程式的執行時間依賴於演算法的好壞和問題的輸出規模

//第一種演算法:

int i,sum=

0,n=

100;

//執行1次

for(i=

1;i<=n;i++

)//執行了n+1次

//第二種演算法:

int sum=

0,n=

100;

//執行1次

sum=(1

+n)*n/2;

//執行1次

int i,j,x=

0,sum=

0,n=

100;

for(i=

1;i<=n;i++

)}

我們在分析乙個演算法的執行時間時,重要的時把基本操作的數量和輸出模式關聯起

我可以忽略演算法加的常數,與最高次項相乘的常數也不重要,可以忽略

判斷乙個演算法效率時,函式中的常數和其他次要項常常可以忽略,而更應該關注主項(最高項)的階數

常數階

int sum =

0,n =

100;

printf

("hello world\n");

printf

("hello world\n");

printf

("hello world\n");

printf

("hello world\n");

printf

("hello world\n");

sum =(1

+n)*n/

2;

o(1)

線性階

平方階

int i,j,n=

100;

for(i=

0;i)}

n等於100,也就是說外層迴圈每執行一次,內層迴圈就執行100次,那總共程式想要從這倆個迴圈出來,需要執行100*100次,也就是n的平方。所以這段**的時間複雜度為o(n^2)

對數階

int i=

1,n =

100;

while

(i

由於每次i * 2之後,就會舉例n更近一步,假設有x個2相乘之後大於或等於n,則會退出迴圈

於是2^x = 你得到x = log(2)n,所以這個迴圈的時間複雜度為o(logn)

常用的時間複雜度所耗費的時間從小到大依次是:o(1)2)3)n)n)

平均執行時間是期望的執行時間

最壞執行時間,通常除非特別指定,我們提到的執行時間都是最壞情況的執行時間

學自fishc.com

C 學習筆記 01 C 的命名空間

在一開始接觸c 的時候,許多小夥伴記下這樣乙個模板 include using namespace std intmain void 以上 中,using namespace std 便是使用了std這樣乙個命名空間 命名空間到底是什麼?簡單地說,命名空間是用來區別不同庫中相同名稱的函式 類 變數等...

面向考試程式設計01(c語言 資料結構)

題目 任意輸入乙個圓的半徑值,程式設計求其面積,半徑為整形,面積為雙精度形 include define pi 3.14 intmain 任意輸入一段字串儲存在字元陣列中,求其中字母,數字,及其他字元的個數 空格算其他字元,例如 char s 100 gets s 比如輸入了 my age is 2...

C語言學習筆記 01 C語言簡介

c語言是一門面向過程 抽象化的通用程式語言,廣泛應用於底層開發。c語言能以簡易的方式編譯 處理低階儲存器,是僅產生少量的機器語言以及不需要任何執行環境支援便能執行的高效率程式語言。c語言誕生於美國的貝爾實驗室,由d m ritchie以b語言為基礎發展而來,在它的主體設計完成後,thompson和r...