演算法複雜度分析

2021-10-06 14:29:02 字數 1140 閱讀 9857

1. 演算法概念:

2. 衡量不同演算法之間的優劣

主要還是從演算法所占用的「時間」和「空間」兩個維度去考量。

3. 時間複雜度

1void swaptwoints

(int

&a,int

&b)

1int sum (

int n )

6return ret;

7}

特別一提的是 c * o(n) 中的 c 可能小於 1 ,比如下面這段**:

1void reverse ( string &s )

6}

1void selectionsort

(int arr,

int n)

10}

1int binarysearch

(int arr,

int n ,

int target)

9return-1

;10}

在二分查詢法的**中,通過while迴圈,成 2 倍數的縮減搜尋範圍,也就是說需要經過 log2^n 次即可跳出迴圈。

同樣的還有下面兩段**也是 o(logn) 級別的時間複雜度。

1

// 整形轉成字串

2 string inttostring (

int num )

9reverse

(s)10

return s;11}

1void hello (

int n )

將時間複雜度為o(logn)的**迴圈n遍的話,那麼它的時間複雜度就是 n * o(logn),也就是了o(nlogn)。

1void hello ()7}8}

4. 常用排序演算法的時間複雜度和空間複雜度及特點

演算法複雜度分析

分析非遞迴演算法效率的通用方案 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...