資料結構 演算法的時間複雜度及空間複雜度

2021-07-24 18:03:25 字數 1825 閱讀 8456

一、緒論

1、  什麼是資料結構?

程式設計=資料結構+演算法,再簡單的來說資料結構就是關係,是資料元素相互之間存在的一種或多種特定關係的集合

2、  資料結構的分類

邏輯結構:資料物件中資料元素之間的相互關係

物理結構:資料邏輯結構在計算機中的儲存形式

3、  邏輯結構分類

集合分類:集合結構中的資料元素除了同屬乙個集合外,無其他關係

線性結構:資料元素是一對一的關係

樹形結構:一對多的層次關係

圖形結構:多對多的關係

4、  物理結構分類

順序儲存:把資料元素存放在位址連續的儲存單元裡,資料間的邏輯結構與物理結構是一致

鏈式儲存:把資料元素存放在任意的儲存單元內

二、演算法

1、演算法的定義

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

2、演算法的五個基本特徵

輸入、輸出、有窮性、確定性、可行性

3、演算法設計的要求

正確性、可讀性、健壯性、時間效率高和儲存量低

三、演算法效率的度量方法

1、如何度量乙個演算法的時間?

事後統計方法:為演算法編好測試程式

事前分析估算方法

2、函式的漸進增長

定義:給定兩個函式f(n)和g(n),如果存在乙個整數n,使得對於所有的n>n,f(n)總是比g(n)大,那麼我們說f(n)的增長漸進快於g(n)

結論:判斷乙個演算法的效率時,函式中的常數和其他次要項常常可以忽略,而更應該關注主項的階數

注意:判斷乙個演算法好不好,我們只能通過少量的資料是不能做出準確判斷的,很容易以偏概全

3、時間複雜度和空間複雜度

演算法時間複雜度的定義:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級。

關鍵:執行次數=時間

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

如何分析乙個演算法的時間複雜度?

(1)      用常數1取代執行時間中的所有加法常數

(2)      在修改後的執行次數函式中,只保留最高端項

(3)      如果最高端項存在且不是1,則去除與這個項相乘的常數

(4)      得到的最後結果就是大o階

四、函式呼叫的時間複雜度分析

舉例:

function函式的時間複雜度是o(1),所以整體的時間複雜度就是迴圈的次數o(n)。

function內部的迴圈次數隨著count的增加而減少,所以演算法的時間複雜度為o(n^2)。(參考平方階)

整體的運算次數為3n^2+1,最後的時間複雜度為o(n^2)

常見的時間複雜度:

五、演算法的空間複雜度

定義:演算法的空間複雜度通過計算演算法所需的儲存空間實現,演算法的空間複雜度的計算公式為s(n)=o(f(n)),其中n為問題的規模,f(n)為語句關於n所佔儲存空間的函式。

通常,我們都是用「時間複雜度」來指執行時間的需求,是用「空間複雜度」指空間需求,當直接求「複雜度」時,通常指的是時間複雜度

資料結構 時間複雜度 空間複雜度

1.演算法效率 演算法效率可以用來衡量乙個演算法的好壞 演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率.時間效率被稱為時間複雜度,空間效率被稱為空間複雜度.時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小...

資料結構(演算法的時間複雜度和空間複雜度)

時間複雜度 時間複雜度和空間複雜度是演算法效率的度量方法。也就是說,乙個好的演算法取決於它的時間複雜度和空間複雜度。函式的漸近增長 給定兩個函式f n 和g n 如果存在乙個整數n,使得對於所有的n n,f n 總是比g n 大。那麼,我們說f n 的增長漸近快於g n 翻譯過來就是 如果存在乙個臨...

資料結構 時間 空間複雜度

1 演算法是指令的有窮序列。5個特徵 有窮性,確定性,可行性,輸入,輸出。4個要求 正確性,可讀性,健壯性,效率與低儲存量。2 漸進時間複雜度 t n o f n 漸進時間複雜度衡量的是乙個演算法基本操作執行次數的數量級,而不是單純地比較程式執行時間的長短。其真實意義應該是 是如果問題規模 n 趨向...