1. 演算法描述:演算法是一組完成特定任務的有窮指令序列。所有的演算法都必須有:輸入,輸出,確定性,有限性和有效性。
2. 選擇排序(selection sort) 原理:首先在排序序列中找到最小元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到排序列未尾。依此類推,直到所有元素均排序完畢。
複雜度分析:選擇排序的交換操作介於0和(n-1)次之間;比較操作為n(n-1)/2之間;賦值操作介於0-3(n-1)次之間。
比較次數是o(n^2),比較次數與關鍵字的初始化狀態無關,總的比較次數n=(n-1)+(n2)+...+1 = n*(n-1)/2。交換次數為o(n),最好情況是,已經有序,交換0次;最壞情況是,逆序,交換n-1次。交換次數比氣泡排序少多了,由於交換所需cpu時間比較所需的cpu時間多,n值較小時,選擇排序比氣泡排序快。
**如下:
a#include #include #define max_size 101 // 資料能儲存最多元素個數以上參考:#define swap(x, y, t) ((t) = (x), (x) = (y), (y) = (t))
void sort(int , int );
int main(void)
for (i = 0; i < n; i++)
sort(list, n);
printf("\nsorted array: \n");
for(i = 0; i < n; i++)
printf("%d ", list[i]);
printf("\n");
}void sort(int list, int n)
}
3. 二分搜尋法(binary search)[折半查詢法]
二分查詢法應用極其廣泛,而且它的思想易於理解。第乙個二分搜尋演算法在2023年就出現了,但第乙個完全正確的二分搜尋演算法直到2023年出現。bentley在他的著作《writing correct programs》中寫道,90%的計算機專家不能在2小時內寫出完全正確的二分搜尋演算法。問題的關鍵在於準確地制定各次查詢範圍的邊界以及終止條件的確定,正確地歸納奇偶數的各種情況。
用遞迴方式實現二分查詢,需要做兩件事:一是,構造遞迴呼叫終止的邊界條件;二是,實現遞迴呼叫,使得每次遞迴呼叫都能向最終解逼近一步。
**如下:
b#define compare(x, y) (((x) < (y)) ? -1: ((x) == (y)) ? 0: 1)4. 演算法的效能分析int binsearch(int list, int searchnum, int left, int right)
}return -1
}
判斷標準可以包含:
a. 程式是否能滿足任務的原始規格說明;
b. 程式是否能正確工作;
c. 程式是否包含說明其使用方法和工作過程的文件;
d. 程式是否有效利用函式來建立每乙個邏輯單元;
e. 程式**的可讀性如何;
f. 程式是否有效地利用記憶體和外存;
g. 程式的執行時間是否可接受
上面的f, g兩條是對演算法效能的評價,演算法的效能會與儲存空間的數量和執行所需的時間有關。
1.) 空間複雜性包括:固定的空間需求和可變的空間需求。
固定的空間需求:指不依賴於程式輸入,輸出數量和大小的空間需求,包括**儲存空間,儲存簡單變數,固定大小的結構變數和常量的儲存空間。
可變的空間需求:包括結構變數所需的儲存空間,這些結構變數的大小依賴於所求問題的特定例項,同時還包括函式遞迴呼叫時所需的額外儲存空間。
2.) 時間複雜性,是指編譯時間和執行時行的總和。程式的時間複雜性由程式所編寫的函式所需的執行步數決定,程式步數本身是程式例項特徵的乙個函式,雖然乙個特定例項可能具有多個特徵,但程式步數的計算結果是這些例項特徵的某個子集的函式。
3.) 例項特徵表:
4.) 效能測試
使用c語言標準庫中的時間事件函式進行計時測試:
第1章 基本概念
1.linux系統程式設計的3大基石 系統呼叫 c庫 c編譯器 呼叫系統呼叫 位於使用者空間的應用程式無法直接訪問核心空間。從安全性和可靠性角度考慮,也需要禁止使用者空間的程式直接執行核心 或操縱核心資料。但從另外乙個角度看,核心也必須提供這樣一種機制,當使用者空間的使用者希望執行系統呼叫時,可以通...
資料結構(1) 基本概念
1.資料 資料是資訊的載體,是描述客觀事物屬性的數 字元以及所有能夠輸入到計算機並被程式識別和處理的符號集合。2.資料元素 資料元素是資料的基本單位,通常作為乙個整體進行考慮和處理。乙個資料元素由若干個資料項組成,資料項是構成資料元素的不可分割的最小單位。3.資料物件 資料物件是具有相同性質的資料元...
資料結構 1基本概念
資料是資訊的載體,描述某個事物屬性的數字 字元以及能夠輸入到計算機被程式識別和處理的符號集合。資料的基本單位,乙個資料元素由若干個資料項組成,例 學生是乙個資料元素,由學號,姓名,性別等資料項組成。1 原子型別 值不可再分的資料型別 2 結構型別 值可在分解若干成分 3 抽象資料型別 adt 抽象出...