資料之間的相互關係稱為邏輯結構。通常分為四類基本結構:
集合結構中的資料元素除了同屬於一種型別外。別無其他關係。
線性結構結構中的資料元素之間存在一對一的關係。
樹型結構結構中的資料元素之間存在一對多的關係。
圖狀結構或網狀結構結構中的資料元素之間存在多對多的關係。
資料結構在計算機中有兩種不同的儲存方法:
順序儲存結構:用資料元素在儲存器中的相對位置來表示資料元素之間的邏輯關係。
時間複雜度
乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。
乙個演算法中的語句執行次數稱為語句頻度或時間頻度。
記為t(n)
在剛才提到的時間頻度中。n稱為問題的規模,當n不斷變化時,時間頻度t(n)也會不斷變化。
但有時我們想知道它變化時呈現什麼規律。
為此,我們引入時間複雜度概念。
普通情況下,演算法中基本操作反覆執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。
有時候,演算法中基本操作反覆執行的次數還隨問題的輸入資料集不同而不同。如在氣泡排序中,輸入資料有序而無序,其結果是不一樣的。此時,我們計算平均值。
常見的演算法的時間 複雜度之間的關係為:
o(1)2)n)n)
例項1
sum=0; //(1)
for(i=1;i<=n;i++) //(2)
for(j=1;j<=n;j++) //(3)
sum++; //(4)
語句(1)執行1次,
語句(2)執行n次
語句(3)執行n2次
語句(4)執行n2次
t(n) = 1+n+2n2= o(n2)
例項2
a=0; b=1; //(1)
for (i=1;i<=n;i++) //(2)
語句(1)執行1次,
語句(2)執行n次
語句(3)、(4)、(5)執行n次
t(n) = 1+4n =o(n)
例項3
i=1; //(1)
while (i<=n)
i=i*2; //(2)
語句(1)的頻度是1,
設語句2的頻度是f(n),則:2f(n)
<=n;f(n)<=log2n
取最大值f(n)= log2n,
t(n)=o(log2n )
空間複雜度
空間複雜度:演算法所需儲存空間的度量,記作:
s(n)=o( f(n) )
當中 n 為問題的規模。
乙個演算法在計算機儲存器上所占用的儲存空間,包含儲存演算法本身所占用的儲存空間,演算法的輸入輸出資料所占用的儲存空間和演算法在執行過程中暫時占用的儲存空間這三個方面。假設額外空間相對於輸入資料量來說是個常數,則稱此演算法是原地工作。
演算法的輸入輸出資料所占用的儲存空間是由要解決的問題決定的,是通過參數列由呼叫函式傳遞而來的。它不隨本演算法的不同而改變。儲存演算法本身所占用的儲存空間與演算法書寫的長短成正比,要壓縮這方面的儲存空間,就必須編寫出較短的演算法。
資料結構與演算法概念解析
集合 結構中的資料元素除了同屬於一種型別外,別無其它關係。線性結構 結構中的資料元素之間存在一對一的關係。樹型結構 結構中的資料元素之間存在一對多的關係。圖狀結構或網狀結構 結構中的資料元素之間存在多對多的關係。資料結構在計算機中有兩種不同的儲存方法 順序儲存結構 用資料元素在儲存器中的相對位置來表...
資料結構與演算法概念
資料結構是個抽象的概念,所以並沒有官方的定義,資料結構 演算法於應用 中是這樣來定義的 資料結構是資料物件,以及存在於該對像的例項以及組成例項的資料元素間的各種聯絡,這種聯絡可以通過定義相關函式來給出。我所理解的資料結構是資料元素之間的關係所構成的某種集合。樹和圖,就是很好的例子,他們是根據資料元素...
資料結構與演算法 概念
計算機從解決數值計算問題到解決生活中的問題 現實生活中的問題涉及不同個體間的複雜聯絡 需要在電腦程式中描述生活中個體間的聯絡 資料結構主要研究非數值計算程式問題中的操作物件以及它們之間的關係而不是研究複雜的演算法 基本概念 資料 程式的操作物件,用於描述客觀事物 資料的特點 可以輸入到計算機 可以被...