數據結構基本概念 - 學習筆記

數據結構基本概念算法

1 數據:數據是用來描述現實世界的數字、字符、圖像、聲音,以及可以輸入到計算機中並能被計算機處理的符號集合數據結構

2 數據元素:數據元素是數據的基本單位,在計算機中一般做爲一個總體進行考慮和處理,一般也稱爲「元素」、「記錄」、「節點」等函數

3 數據對象:數據對象是具備相同性質的數據元素的集合,是數據的一個子集spa

4 數據結構:在實際問題中,數據元素不是孤立存在的,而是在相互之間存在一種或多種特定的關係,這種數據元素相互間的關係稱爲「數據結構「.net

注:我以爲應該重點理解」數據元素「和」數據結構「指針

數據元素舉例:在學生信息表中,可能含有姓名、學號、性別等字段(屬性),每一個學生的信息能夠稱爲一條記錄,也就是一個數據元素,而且通常做爲總體處理對象

數據結構:包含數據邏輯結構和數據存儲結構兩方面的描述索引

1、數據的邏輯結構ip

數據結構

1 集合結構 : 集合結構的數據元素除了同屬於一個集合外,他們之間沒有任何聯繫.get

2 線性結構 : 數據元素存在」一對一」的關係

XB

3 樹形結構 : 數據元素存在」一對多」的關係

ST

4 圖形結構 : 數據元素存在」多對多」的關係

image 

2、數據的存儲結構

數據的存儲結構就是數據元素及其相互關係的存儲方式。要想用計算機處理數據,就必須把數據的邏輯結構映射爲數據的存儲結構。

按照數據的存儲結構,通常將數據結構分爲順序存儲結構、鏈式存儲結構、索引存儲結構和散列存儲結構。

1 順序存儲結構 : 主要特色是邏輯上相鄰的數據元素在物理位置上也是相鄰的。

image

2 鏈式存儲結構 : 藉助指針表達數據元素之間的邏輯關係。

image

3 索引存儲結構 : 在存儲數據元素的同時,還創建附加的索引表。經過索引表,能夠快速的找到存儲數據元素的節點。

4 散列數據結構 : 根據散列函數和處理衝突的方法肯定數據元素的存儲位置

說明:

數據的邏輯結構和數據的存儲結構是指一個事物的兩個方面,而不是兩個事物。一種邏輯結構能夠映射爲多種存儲結構,而一種存儲結構也能夠對應多種邏輯結構。

抽象數據類型:數據類型名稱、數據對象、數據關係及其基本操做科學完整的描述

通常形式以下:

ADT <抽象數據類型名> {

數據對象:<數據對象的定義>

數據關係:<數據關係的定義>

基本操做:<基本操做的定義>

} ADT <抽象數據類型名> ;

 

「線性表」抽象數據類型的定義

ADT List {

數據對象:D={ai|aiclip_image002ElemSet, i=1,2,3…,n, n>=0}

數據關係:R={<ai-1,ai>|ai-1,aiclip_image002 D, i=2,3,… n }

基本操做:

InitList(*L):創建一個空的線性表

ListEmpty(L):斷定線性表是否爲空。若爲空,則返回True

ListLength(L):獲取線性表中數據元素的個數

TraverseList(L):遍歷線性表中數據元素

ListInsert(*L, i, e):將數據元素插入到線性表中第i個位置處,線性表長度加1

ListDelete(*L, i, *e):刪除線性表中第i個位置的數據元素,並存放到e中,線性表長度減1

Find(L, e):查找數據元素e所在位置

GetElem(L, i, *e):從線性表中獲取第i個位置處的數據元素,並存放到e中

GetPrior(L, x, *pre_e):在線性表中獲取數據元素x的前一個數據元素的值,並存放到pre_e中

GetNext(L, x, *next_e):在線性表中獲取數據元素x的後一個數據元素的值,並存放到next_e中

ClearList(*L):將線性表置空

} ADT List;

算法特徵

定義:算法是對特定問題求解步驟的一種描述,它是指令的有限序列。

算法的5個重要特徵:

(1) 可行性

(2) 有窮性:算法的有窮性是算法和程序的分界點。

(3) 肯定性

(4) 有輸入

(5) 有輸出

算法的度量及分析

(1) 時間效率:時間複雜度 (time complexity)---算法開始運行到結束所需時間(假設執行每條語句的時間均爲單位時間)

(2) 空間效率:空間複雜度 (space complexity)---算法所需存儲空間的量度

*時間複雜度的分析

示例:T(n)=O(n2)

T(n)用來表示時間複雜度,O(n2)表示具體的時間複雜度爲n2 ;

常見時間複雜度:

(1)常量階:O(1)

(2)線性階:O(n)

(3)平方階和立方階:O(n2)和O(n3)

(4)對數階:一般以2爲底—O(log2n)

(5)其餘:指數階—O(2n), 階乘階—O(n!)

經常使用時間複雜度所耗費的時間從小到大依次爲:

O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

相關文章
相關標籤/搜索