2.1 資料(data)
數值資料:整數、實數、複數
非數值資料:如字元、文字、圖形、影象、聲音等
2.2資料元素(data element)和資料項(data item)
資料元素:資料元素是資料的基本單位,在電腦程式中通常被作為乙個整體進行考慮 和處理。資料元素有時也被稱為元素、結點、頂點、記錄等。乙個資料元素可由 若干個資料項(data item)組成。
資料項:資料項是不可分割的、含有獨立意義的最小資料 單位,資料項有時也稱為字段(field)或域(domain)。
【舉例】:
在資料庫資訊處理系 統中,資料表中的一條記錄就是乙個資料元素。這條記錄中的學生學號、姓名、性別、籍貫、出生年月、成績等字段就是資料項。
資料項分為兩種:一種叫做初等項,如學生的性別、籍貫等,在處理時不能再進行分割;另一種叫做組合項, 如學生的成績,它可以再分為數學、物理、化學等更小的項。
2.3資料物件
資料物件是性質相同的資料元素的集合,是資料的乙個子集。例如,整數數 據物件是,字元資料物件是。
2.4資料型別
非結構的原子型別:如 c#語言中的基本型別 (整型、實型、字元型等);
結構型別:它的成分可以由多個結構型別 組成,並可以分解。結構型別的成分可以是非結構的,也可以是結構的。例如, c#語言中陣列的成分可以是整型等基本型別,也可以是陣列等結構型別。
2.5資料結構
資料結構是相互之間存在一種或多種特定關係的資料元素的集合。在任何問題中,資料元素之間都不是孤立的,而是存在著一定的關係,這種關係稱為結構 (structure)。根據資料元素之間關係的不同特性,通常有 4 類基本資料結構:
(1) 集合(set):如圖 1.1(a)所示,該結構中的資料元素除了存在「同屬於乙個集 合」的關係外,不存在任何其它關係。
(2) 線性結構(linear structure):如圖 1.1(b)所示,該結構中的資料元素存在著一 對一的關係。
(3) 樹形結構(tree structure):如圖 1.1(c)所示,該結構中的資料元素存在著一對 多的關係。
(4) 圖狀結構(graphic structure):如圖 1.1(d)所示,該結構中的資料元素存在著 多對多的關係。
資料結構的形式化定義為:資料結構(data structure)簡記為ds,是乙個二元組, ds = (d,r)其中:d 是資料元素的有限集合,r 是資料元素之間關係的有限集合。
3.1演算法的特性
有窮性;確定性;輸入;輸出;能行性。
3.2演算法的評價標準
正確性;可讀性;健壯性;執行時間;占用空間。
3.3演算法的時間複雜度
乙個演算法的時間複雜度(time complexity)是指該演算法的執行時間與問題規 模的對應關係。乙個演算法是由控制結構和原操作構成的,其執行的時間取決於二 者的綜合效果。為了便於比較同一問題的不同演算法,通常把演算法中基本操作重複 執行的次數(頻度)作為演算法的時間複雜度。演算法中的基本操作一般是指演算法中 最深層迴圈內的語句,因此,演算法中基本操作語句的頻度是問題規模n的某個函 數f(n),記作:t(n)=o(f(n))。
其中「o」表示隨問題規模n的增大,演算法執行時 間的增長率和f(n)的增長率相同,或者說,用「o」符號表示數量級的概念。
如果乙個演算法沒有迴圈語句,則演算法中基本操作的執行頻度與問題規模n無 關,記作o(1),也稱為常數階。如果演算法只有乙個一重迴圈,則演算法的基本操作 的執行頻度與問題規模n呈線性增大關係,記作o(n),也叫線性階。常用的還有 平方階o(n2)、立方階o(n3)、對數階o(log2n)等。
【例1】 分析以下程式的時間複雜度。
x=n; /*解:這是一重迴圈的程式,while 迴圈的迴圈次數為 根號n,所以,該程式段中的語句①的頻度是 根號n,則程式段的時間複雜度是 t(n)=o(根號 n)。n>1
*/y=0
;while(x >= (y+1)*(y+1
))
4.1集合
4.2對數
4.3遞迴
如果乙個演算法直接呼叫自己或間接地呼叫自己,就稱這個演算法是遞迴 的(recursive)。
函式的遞迴呼叫可以理解為:通過一系列的自身呼叫,達到某一終止條件後, 再按照呼叫路線逐步返回。遞迴是程式設計中強有力的工具,有很多數學函式是 以遞迴來定義的。
如大家熟悉的階乘函式,我們可以對n!作如下定義:
根據定義,如要計算 n!(factorial(n)),需要先呼叫 factorial(n-1)計算 (n-1)!,而要計算(n-1)!需要先呼叫 factorial(n-2)計算(n-2)!,以此類推,最 終需要呼叫 factorial(0)計算 0!,然後程式逐步返回,即可計算出 n!。階乘函式的c#語言實現如下。
public把遞迴作為一種主要用於設計和描述簡單演算法的工具,對於不熟悉它的程式設計人員而言是很難接受的。遞迴演算法通常不是解決問題最有效的電腦程式,因為 遞迴包含函式呼叫,函式呼叫需要時空開銷。所以,遞迴比其他替代選擇諸如while迴圈等,所花費的代價更大。static
long fact(int
n)else
}
最後,用一句話結束此篇用來勉勵園子裡的程式猿們。
只有多思索、 多練習,才能提高自己的程式設計水平;否則,書看得再多,提高也不大。-----摘自《資料結構(c#)》注:本文部分引用《資料結構(c#)》
資料結構總結(1)
1 資料結構是 相互之間存在的一種或多種特定關係的資料元素的集合。2 用乙個圖描述資料 資料元素 資料項 資料物件之間的關係。3 邏輯結構 集合結構 線性結構 樹形結構 圖形結構 4 物理結構 1 順序儲存結構 把資料元素放在位址連續的儲存單元裡,其資料間的邏輯關係和物理關係是一致的 2 鏈式儲存結...
資料結構1總結
一 如何衡量乙個演算法的好壞?1,正確性。a程式不含錯誤語法,b程式對於輸入的資料能夠得出所要求的結果,c程式對於典型甚至苛刻的資料也能得出所求結果,d對於一切合法輸入的資料都有相對應的結果。2,可讀性。主要方便人的閱讀,可讀性好有助於人去理解。3,健壯性。當輸入資料非法時,演算法也能適當地做出處理...
資料結構(1) 資料結構的三大結構
什麼是資料結構 1.資料結構的有關定義 1 資料結構 是帶有結構資料元素的集合 2 資料 是客觀事物的數值 字元以及能輸入機器且能被處理的各種符號的集合 編譯 鏈結 源程式 c 目標程式 obj 可執行程式 exe 3 資料物件 是性質相同的資料元素的集合 4 資料型別 一組性質相同的值的集合以及定...