《大話資料結構》資料結構與演算法學習筆記3

2021-10-22 08:32:19 字數 825 閱讀 8024

演算法複雜度

問題的輸入規模為n,判斷乙個演算法的效率時,函式中的常數和其他次要項通常可以忽略,而應該更加關注主項(最高端項)的階數。——就是和數學分析裡判斷兩個函式高低階的思路一樣。

如果規範一下說法,就是演算法時間複雜度——

演算法時間複雜度

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

——用o()裡體現演算法時間複雜度的記法稱為大o記法。

一般情況下,隨著n的增大,t(n)增長最慢的演算法為最優演算法。

要分析演算法的複雜度,關鍵就是要分析迴圈結構的運**況(特別是看迴圈語句要執行多少次,且迴圈的時間複雜度等於迴圈體的複雜度乘以該迴圈執行的次數)。

常數階o(1):執行時間恆定,與問題的輸入大小n無關。

線性階o(n):通常是乙個迴圈體,然後裡面的內容是o(1)。

對數階:經常出現在條件判斷情況下。

**平方階:**有很多不同的例子,詳見書的33-34頁。

常見時間複雜度的耗費時間排序:

常數階《對數階《線性階n) < 階乘階 < nn階

指數階及後面的階數有些不切實際,所以一般不去討論。

資料結構與演算法學習

我想重新學習一下資料結構與演算法,打好基礎。to measure is to know.我們用演算法複雜度t n 來表示演算法的效率,效能。t n 的取值 所有問題規模為n的問題例項中,將他們的計算成本進行總體的比較,取出最壞情況下的值。有幾點需要catch,1.演算法執行的時間,會根據程式語言,作...

資料結構與演算法學習筆記

演算法基礎篇 第一章 演算法概述 首先了解一下基本的概念 1.1 什麼是演算法呢?從字面意義上理解,演算法就是用於計算的方法,用這種方法達到預期的結果。通俗的講,演算法可以理解為乙個完整的解題步驟,由一些基本的運算和規定的運算順序組成。通過這樣的解題步驟可以解決特定的問題。演算法可以抽象出5個特徵 ...

資料結構與演算法學習二

1 用js中object物件模擬集合set的資料結構 set集合中的資料結構 s s 即集合中的鍵 值相同。故,可令object物件中的鍵 值相同,來模擬set集合及其中的方法,如下 用js中object模擬實現集合set資料結構 es6中有set類,避免混淆這裡用set2 var set2 fun...