資料結構之演算法複雜度

2021-08-20 19:24:59 字數 1296 閱讀 6970

解決特定問題求解步驟的描述。在計算機中表現為指令的有限序列,每條指令可表示乙個或多個操作。

此外,乙個演算法還具有下列5個特性:有窮性,確定性,可行性,輸入,輸出。

演算法設計的要求:正確性,可讀性,健壯性,效率與低儲存量需求。

what?時間複雜度和空間複雜度

why?可以用度量演算法的好與壞

how?控制變化因素,估算n趨於無窮的複雜度

時間複雜度實際上就是乙個計算執行基本操作次數的函式,不受外界影響。

方法:大o漸進表示法:乙個演算法語句總的執行次數是關於問題規模n的某個函式,記為f(n),n稱為問題的規模。語句總的執行次數為t(n),當n不斷變化時,t(n)也在變化,演算法執行次數的增長速率和f(n)的增長速率相同。則有t(n)=o(f(n)),稱o(f(n))為時間複雜度的o漸進表示法。

常見的時間複雜度:

void test(int n)

} for (int k = 0; k < 2 * n; k++)

int count = 10;//(1次)

while (count--)//(10次) }

//語句總執行次數:f(n)=n*n+2*n+10

//則時間複雜度估算為:o(n*n)

//二分查詢

int binarysearch(int arr,int sz,int n)

else if (arr[mid] > n)

else

}return -1;

}//遞迴演算法

//求1+2+...+n之和

long sum(int n)

//求階乘

long long fac(int n)

//時間複雜度都為o(n)

總結:

找次數;

o();

用常數1取代執行時間中所有加法常數;

保留最高端;

若最高端不是1,則去掉1(即常數)。

函式中建立物件的個數關於問題規模的函式表示式。相當於求高度,一般用o漸進法表示。

//1.求前n項和

//空間複雜度o(1)

int sum(int n)

//2.斐波那契

//空間複雜度:o(n)

//時間複雜度:o(2^n)

long long fib(int n)

//求兔子個數問題

//空間複雜度:o(n)

//時間複雜度:o(2^n)

long fib(long first,long second,long n)

資料結構 演算法複雜度

二 演算法的效能評價 三 真題解析 資料結構的第一章 緒論 包含的最後乙個重要內容是關於演算法的複雜度。這個考點一般會單獨出現在選擇題的前兩道,需要你熟練掌握演算法的基本概念 演算法時間複雜度和空間複雜度的分析判斷等。其次,還會出現在大題的程式設計部分,將演算法複雜度作為乙個限制條件,要求你給出滿足...

資料結構之演算法時間複雜度

演算法的時間複雜度定義為 在進行演算法分析時,語句總的執行次數t n 是關於問題規模n的函式,進而分析t n 隨n的變化情況並確定t n 的數量級。演算法的時間複雜度,也就是演算法的時間量度,記作 t n 0 f n 它表示隨問題規模n的增大,演算法執行時間的埔長率和 f n 的埔長率相同,稱作演算...

資料結構之演算法時間複雜度

資料結構之演算法時間複雜度 演算法的時間複雜度定義為 在進行演算法分析時,語句總的執行次數t n 是關於問題規模n的函式,進而分析t n 隨n的變化情況並確定t n 的數量級。演算法的時間複雜度,也就是演算法的時間量度,記作 t n 0 f n 它表示隨問題規模n的增大,演算法執行時間的埔長率和 f...