是指相互之間存在一種或多種特定關係的數據元素的集合用計算機存儲、組織數據的方式。 算法
在C語⾔中,按照取值不一樣,數據類型能夠分爲2類:數組
主要表現形容包括鏈表,數組,字典,棧,隊列,字符串,線性表,其中隊列,棧是特殊的線性結構(主要特殊在讀取方式)。markdown
算法就是解決特定問題求解步驟的描述,在計算機中表現爲指令的有限序列,冰球每一個指令表示一個或多個操做。數據結構
1.輸入輸出:必須有輸入和輸出結果
2.有窮性:算法能夠在有限次的執行下獲得結果而不是出現無限循環
3.肯定性:算法執行的每一步驟在必定條件下只有一條執行路徑,一個相同的輸入對應相同的一個輸出
4.可行性:算法每一步驟都必須可行,可以經過有限的執行次數完成函數
1.正確性:不能有語法錯誤
2.可讀性:正確合理註釋代碼
3.健壯性:異常判斷及相應提示,好比下標越界,輸入值符合標準等
4.時間效率高和儲存量低spa
/* 1. 常數階時間複雜度計算 O(1) */ //1+1+1 = 3 O(1) void testSum1(int n){ int sum = 0; //執行1次 sum = (1+n)*n/2; //執行1次 printf("testSum1:%d\n",sum);//執行1次 } 複製代碼
/*2.線性階*/ //x=x+1; 執行n次 O(n) void add2(int x,int n){ for (int i = 0; i < n; i++) { x = x+1; } } 複製代碼
/*3.平方階*/ //x=x+1; 執行n*n次 ->O(n^2) void add3(int x,int n){ for (int i = 0; i< n; i++) { for (int j = 0; j < n ; j++) { x=x+1; } } } 複製代碼
/*4.對數階*/ /*2的x次方等於n x = log2n ->O(logn)*/ void testA(int n){ int count = 1; //執行1次 //n = 10 while (count < n) { count = count * 2; } } 複製代碼
/*5.立方階*/ void testB(int n){ int sum = 1; //執行1次 for (int i = 0; i < n; i++) { //執行n次 for (int j = 0 ; j < n; j++) { //執行n*n次 for (int k = 0; k < n; k++) {//執行n*n*n次 sum = sum * 2; //執行n*n*n次 } } } } 複製代碼
在考量算法的空間複雜度,主要考慮算法執行時所須要的輔助空間設計