複雜度一般分為空間複雜度和時間複雜度。
空間複雜度是指演算法在運算過程中對記憶體空間占用的最大值。
時間複雜度是指演算法在運算過程中對最大消耗的時間。
兩種複雜度都是一種估算,估算的方式就是根據**的邏輯,分析出對於複雜度的公式。
在時間複雜度上,主要記錄的是帶有變數的迴圈。
比如for (i = 0; i < n; i ++) 可理解為o(n)。
而 x = n + 1; y = x + 1; z = x + y;雖然是三條語句,但是沒有迴圈操作,所以理解為o(1)。
在空間複雜度上,主要記錄的是帶有變數的空間申請。
比如int[n] x;可以理解為o(n)。
而 int x; int y; int z;雖然是三個變數,但是沒有變化的申請操作,所以理解為o(1)。
求解演算法的時間複雜度的具體步驟是:
⑴ 找出演算法中的基本語句;
演算法中執行次數最多的那條語句就是基本語句,通常是最內層迴圈的迴圈體。
⑵ 計算基本語句的執行次數的數量級;
只需計算基本語句執行次數的數量級,這就意味著只要保證基本語句執行次數的函式中的最高次冪正確即可,可以忽略所有低次冪和最高次冪的係數。這樣能夠簡化演算法分析,並且使注意力集中在最重要的一點上:增長率。
⑶ 用大ο記號表示演算法的時間效能。
將基本語句執行次數的數量級放入大ο記號中。
如果演算法中包含巢狀的迴圈,則基本語句通常是最內層的迴圈體,如果演算法中包含並列的迴圈,則將並列迴圈的時間複雜度相加。
具體參考:演算法的時間複雜度和空間複雜度-總結
演算法複雜度分析
分析非遞迴演算法效率的通用方案 1.決定用哪個 哪些 引數作為輸入規模的度量 2.找出演算法的基本操作 作為一規律,它總是位於演算法的最內層迴圈中 3.檢查基本操作的執行次數是否只依賴輸入規模。如果它還依賴一些其他的特性,則最差效率 平均效率以及最優效率 如果必要 需要分別研究。4.建立乙個演算法基...
演算法複雜度分析
演算法分析的四個漸進表示法 一般,o裡的,取最小的 一般,裡的,取最大的 一般分析時間複雜度,且常考慮最壞複雜度,常用o分析 三法則 法則一 如果t1 n o f n t2 n0 o g n t1 n t2 n max o f n o g n t1 n t2 n o f n o g n 法則二 如果...
演算法複雜度分析
類別name 名字交換類排序 quicksort 快速排序 交換類排序 bubble sort 氣泡排序 選擇類排序 selection sort 選擇排序 選擇類排序 heapsort 堆排序插入類排序 insertion sort 插入排序 插入類排序 shell sort 希爾排序 bucke...