一、資料結構概述
資料結構的主要任務是通過分析資料物件的結構特徵,包括邏輯結構及資料物件之間的關係,然後把邏輯結構表示成計算機課實現的物理結構,從而便於計算機處理。
概念術語:二、資料的邏輯結構與物理結構:
邏輯結構(logical structure)是指在資料物件中資料元素之間的相互關係。資料元素之間存在不同的邏輯關係構成了以下四種結構型別:
1)集合型別:集合結構中的資料元素除了同屬於乙個集合外,它們之間沒有其他的關係。各個資料元素是「平等的」,它們的共同屬性是「同屬於乙個集合」,資料結構中的集合就類似於數學中的集合;
2)線性結構:線性結構中的資料元素之間是一對一的關係,並且是一種先後的次序;
3)樹形結構:樹形結構中的資料元素之間存在一種一對多的層次關係;
4)圖形結構:圖形結構的資料元素關係是多對多的關係;
儲存結構(storage structure)也稱為物理結構(physical structure),指的是資料的邏輯結構在計算機中的儲存形式,資料的儲存結構一般可以反映資料元素之間的邏輯關係,分為順序儲存結構和鏈式儲存結構:
1)順序儲存結構:是把資料元素存放在位址連續的儲存單元裡,其資料間的邏輯關係和物理關係是一致的;
2)鏈式儲存結構:是把資料元素存放在任意的儲存單元裡,這組儲存單元可以是連續的,也可以是不連續的。資料元素的儲存關係並不能反映其邏輯關係,因此需要用乙個指標存放資料元素的位址,這樣通過位址就可以找到相關聯資料元素的位置;
三、演算法演算法效率的度量方法:
1)演算法採用的策略、方案;
2)編譯產生的**質量;
3)問題的輸入規模;
4)機器執行指令的速度;
四、時間複雜度
在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級;演算法的時間複雜度,也就是演算法的時間度量,記作:t(n)=o(f(n))。它表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的漸進時間複雜度,簡稱為時間複雜度。其中f(n)是問題規模n的某個函式,這樣用大寫o來體現演算法時間複雜度的記法,我們稱之為大o記法。
階非正式術語
o(1)
常數階o(n)
線性階o(n^2)
平方階o(logn)
對數階o(nlogn)
nlogn階
o(n^3)
立方階o(2^n)
指數階常用的時間複雜度所耗費的時間從小到大依次是:
五、空間複雜度
演算法的空間複雜度通過計算演算法所需的儲存空間實現,演算法空間複雜度的計算公式記作:s(n)=o(f(n)),其中,n為問題的規模,f(n)為語句關於n所佔儲存空間的函式;
一般情況下,乙個程式在機器上執行時,除了需要儲存的程式本身指令、常數、變數和輸入資料外,還需要儲存對資料操作的儲存單元。若輸入資料所佔空間只取決於問題本身,和演算法無關,這樣只需要分析該演算法在實現時所需的輔助單元即可。若演算法執行時所需的輔助空間相對於輸入資料量而言是個常數,則稱此演算法為原地工作,空間複雜度為o(1)。
資料結構與演算法(一)基礎概念篇
資料結構 是指相互之間存在一種或多種特定關係的資料元素的集合用計算機儲存 組織資料的方式。資料結構分別為邏輯結構 儲存 物理結構和資料的運算三個部分。反映資料元素之間的關係的資料元素集合的表示。資料的邏輯結構包括集合 線形結構 樹形結構和圖形結構四種。根據資料結構中各資料元素之間前後件關係的複雜程度...
資料結構與演算法 基礎概念篇
我們都知道 程式設計 資料結構 演算法 首先我們先來認識資料結構和演算法的基本概念。相關概念 資料 是描述客觀事物的符號,是計算機中能夠操作的物件,能夠被計算機所識別 並輸入給計算機處理的符號集合。資料元素 是組成資料,有一定意義的基本單位,在計算機中常被作為整體處理,也被稱之為記錄。資料項 乙個資...
資料結構與演算法(一) 資料結構與演算法概念
資料結構是計算機儲存 組織資料的方式。資料結構是指資料與資料之間的關係。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。邏輯結構 示意圖1 集合結構 2 線性結構 3 樹形結構 4...