C 資料結構中演算法的使用

2021-08-15 18:22:17 字數 1057 閱讀 8266

時間複雜度其實就是乙個函式進行運算時執行的基本操作的次數;

運算分類的分析:

1.最壞的情況:任意輸入規模的最大次數;

2.平均情況:任意輸入規模等與平均次數;

3.最好的情況:任意輸入規模的最少次數;

當然在實際情況下我們通常考量的最大執行次數,也就是任意輸入規模,演算法執行的最長時間,例如:

1.乙個程式執行的最壞情況便是執行時間最長時間,同樣也是乙個程式的演算法的上界;

2.對於有些演算法,最壞情況出現的次數較為頻繁;

3.當然平均情況和最壞情況一樣差;

void test(int n)

}int j = 0;

for(j = 0;j < n;j++)

int k = 5;

while(k--)

}

這個函式的時間複雜度:f(n) = n^2 + n + 5;

時間複雜度,0漸進表示法

乙個演算法中語句總的執行次數稱為語句的頻度或時間頻度,記為t(n),n稱為問題的規模。一般情況下,演算法總的執行次數t(n)是問題規模(n)的某個函式f(n),當n不斷變化時,時間頻度t(n)也會不斷的變化,當n趨近於無窮大時,演算法執行次數的增長率和

f(n)的增長率相同,記作t(n)= o(f(n)),稱o(f(n))為演算法的時間複雜度。

void test4(int m, int n)

}}

總執行次數:f(n) = 2*m*n == o(2*m*n)-->o(m*n);

空間複雜度的計算和時間複雜度相類似,都是通過大0的漸進表示法;

遞迴演算法的空間複雜度的演算法比如遞迴深度為n*每次遞迴呼叫的空間,如果遞迴呼叫的空間為常熟,則空間複雜度為0(n);

例如:

long long fibonacci3( int n )

;for (int i = 2; i <= n ; ++i)

return fibarray [2];

}

C 資料結構中的基本演算法排序

氣泡排序 基本思想 兩兩比較待排序的數,發現反序時交換,直到沒有反序為止。public static void bubblesort int r if noswap 快速排序 基本思想 在待排序數列中任選出乙個數作為基準,用這個基準將數列劃分為左右兩個子區,使得左子區的數都不大於基準數,而右子區的數...

資料結構 資料結構演算法

分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...

資料結構中的排序演算法

排序分為記憶體排序和外部排序,內部排序在記憶體中進行,外部排序因資料量較大,在外存中進行。一般我們常說的八大排序為內部排序。複雜度為o nlog2n 的排序演算法 快速排序 堆排序和歸併排序。1.1 演算法思想 每趟將乙個待排序的元素作為關鍵字,按照其關鍵字值的大小插入到已經排好的部分序列的適當位置...