1.時間複雜度 t(n)=o(f(n))
只保留最高項、不要係數
(1)
o(f(n))=o(1)
(2)for 1層迴圈 o(f(n))=o(n)
(3)for 2層迴圈,o(f(n))=o(n^2)
(4)for 3層迴圈,o(f(n))=o(n^3)
(5)
for(int i=2;i
<=n;i++)
for(int j=2;j
<=i-1;j++)
共2*(0+0+1+2+…+n-2)次,即o(f(n))=o(n^2)
(6)for(int i=1;i<=n;i*=2;)
共log(n)2;即o(f(n))=o(log(n)2)
(7)for(int i=1;i<=sqrt(n);i++)
o(f(n))=o(n^(1/2))
(8)遞迴中return fun(n/2)+n;
即o(f(n))=o(log(n)2) ,與第(6)類似
2.空間複雜度
實現演算法所需要的額外的輔助空間
從變數的作用域,變數分為區域性變數和全域性變數
從變數的生存期,變數的儲存方式分為靜態儲存方式和動態儲存方式
1.區域性變數的儲存類別
區域性變數:在函式內部定義的變數
主函式中定義的變數是區域性變數,形參也是區域性變數
作用域:只在本函式內部有效
(1)自動變數(auto變數)
不專門宣告為static(靜態)儲存型別,都是動態的分配儲存空間,它的預設值隨機,資料儲存在動態儲存區中,函式呼叫結束時就自動釋放這些儲存空間。
(2)靜態區域性變數(static區域性變數)
有關鍵字static,它的預設值為0,在靜態儲存區內分配儲存單元,區域性變數的值在函式用結束後繼續保留原值,即其占用的儲存單元不釋放。
2.全域性變數的儲存類別
全域性變數:在函式外定義,不安全
作用域:整個工程內都可以使用,從變數的定義處開始,到本程式檔案的結尾
記憶體區域:靜態變數區
生命週期:執行時被建立,退出時被銷毀
預設值:0
(1)外部變數
關鍵字extern可以對該變數做「外部變數宣告」,表示把該變數的作用域擴充套件到此位置,可以擴充套件到乙個檔案,也可以擴充套件到其他檔案。有了此宣告,就可以從「宣告」處起,合法的使用該外部變數。如:extern int a,b,c;
(2)靜態外部變數(用static宣告)
將外部變數的作用域限制在本檔案中
用static宣告乙個變數的作用是:對全域性變數用static宣告,把它分配在靜態儲存區,該變數在整個程式執行期間不釋放,其所分配的空間始終存在; 對全域性變數用static宣告,則該變數的作用域只限於本檔案模組。
1.一維陣列
int arr[10]=;
如記憶體為arr分配10個格仔
arr 表示陣列首元素位址,如陣列arr首位址為0x00d2fef8, 型別為int *
arr+1 表示格仔號為1的元素的位址,如0x00d2fefc,與第0個格仔位址差值為4,型別為int *
arr[0] 表示格仔號為0的元素的內容,此時為0, 型別為int
arr[1] 表示格仔號為1的元素的內容,此時為1, 型別為int
arr[0]+1 表示格仔號為1的元素的內容,即arr[1],此時為1, 型別為int
2,二維陣列
int brr[3][4]=;
如分配3*4的記憶體空間
brr 表示第0行首位址為0x010ffb34 , 型別為int(*p)[4],即陣列指標
brr+1 表示第1行首位址為0x010ffb44, 型別為int(*p)[4]
brr[0] 表示第0行第0列元素位址為0x010ffb34, 型別為int *
brr[0]+1 表示第0行第1列元素位址為0x010ffb38, 型別為int *
brr[1] 表示第1 行首位址為0x010ffb44, 型別為 int*
brr[0][0] 表示第0行第0列元素內容為0, 型別int
brr[0][0]+1 表示第0行第1列元素內容為1, 型別int
brr[1][0]+1 表示第1行第1列元素內容為5, 型別為int
C語言基礎知識學習(三)
c語言基礎知識學習之程式結構 一 程式結構 程式結構 可以分為 順序 分支和迴圈 1分支結構 if else 1 if 的使用形式 如果條件為真執行語句塊1,否則跳過。if 常量 變數 表示式 2 if else 形式如果條件為真執行語句塊1,為假執行語句塊2。if 常量 變數 表示式 else 3...
C語言基礎知識學習(三)
一 程式結構 程式結構可以分為 順序 分支和迴圈 1分支結構 if else 1 if 的使用形式 如果條件為真執行語句塊1,否則跳過。if 常量 變數 表示式 2 if else形式 如果條件為真執行語句塊1,為假執行語句塊2。if 常量 變數 表示式 else 3 if else 巢狀形式 if...
C語言基礎知識總結(三)
1 聯合體 共用體 不同型別的變數共同占用一段記憶體 相互覆蓋 聯合變數任何時刻只有乙個成員存在,節省記憶體 聯合體變數的大小 最大的成員所佔的位元組數 union myvalue void main typedef union jvalue jvalue 2 列舉 限定值,保證取值的安全性 enu...