在學習資料結構之前先要學習幾個相關的概念及術語1、資料(Data):資料是外部世界資訊的載體,它能被電腦識別、儲存和加工處理,是電腦程式加工的原料。2、資料元素(Data Element)和資料項目:資料元素是資料的基本單位,有時也被稱為元素、結點、頂點、記錄等。一個資料元素可由若干個資料項目組成;資料項目是不可分割的、含有獨立意義的最小資料單位,資料項目有時也稱為欄位(Field)或域(Domain).之間關係為資料項目組成資料元素,資料元素組成資料(,資料群組成檔案)。使用資料庫模型來舉例說明:3、資料對象(Data Object):性質相同的資料元素的集合,是資料的一個子集,例如字母表對象{a,b,c,…x,y,z}4、資料類型(Data Type):資料的取值範圍和對資料進行操作的總和。資料類型規定了程式中對象的特性;程式中每個變數、常量或運算式的結果都應該屬於某種確定的資料類型。資料類型可分可兩類:一類是非結構的原子類型,如C#的基本類型;另一類是結構類型,其成分由多個結構類型組成,可以分解;如C#的數群組類型。5、資料結構(Data Struct):相互之間存在一種或多種關係 的資料元素的集合。通常有4類基本資料結構:1)集合(Set)2)線性結構(Linear Structure)3)樹形結構(True Structure)4)圖狀結構(Graphic Structure)資料結構(Data Structrue)簡記為DS,是一個二元組,DS=(D,S),其中D為資料元素的有限集合,R是資料元素之間關係的有限集合。6、演算法(Algorithm):是對某一特定類型的問題的求解步驟的一種描述,是指令的有限序列。它具有有窮性(Finity)、確定性(Unambiguousness)、輸入(Input)、輸出(Output)和有效性(Realizability)。針對演算法優劣的評價標準包括正確性(Correctness)、可讀性(Readability)、健壯性(Robustness魯棒性)、已耗用時間(Running Time)和佔用空間(Storage Space)。7、演算法的時間複雜度(Time Complexity):指演算法的已耗用時間與問題規模的對應關係。通常把演算法中基本操作重複執行的次數作為演算法的時間複雜度。它是與問題規模n相關的函數。記作T(n)=O(f(n)),例如T(n)=n(n+1),推薦一篇好文http://www.matrix67.com/blog/archives/5298、高等數學相關基礎知識計量單位(Unit):位元組為B,位縮寫為b,MB為MB,KB縮寫為KB階乘函數(Factorial Function):5!=5*4*3*2*1=120,特別地,0!=1取下整和取上整(Floor and Ceiling):⌊3.4⌋=3(下整) ,⌈3.4⌉=4(上整)模數操作符(Modulus):n=q*m+r ⇒m=n/q對數(Logarithm):若ab=N,那麼數b叫做以a為底N的對數,記作logaN=b,其中a叫做對數的底數,N叫做真數。遞迴(Recursive):演算法調用自己或間接調用自己。
在學習資料結構之前先要學習幾個相關的概念及術語
1、資料(Data):資料是外部世界資訊的載體,它能被電腦識別、儲存和加工處理,是電腦程式加工的原料。
2、資料元素(Data Element)和資料項目:資料元素是資料的基本單位,有時也被稱為元素、結點、頂點、記錄等。一個資料元素可由若干個資料項目組成;資料項目是不可分割的、含有獨立意義的最小資料單位,資料項目有時也稱為欄位(Field)或域(Domain).之間關係為資料項目組成資料元素,資料元素組成資料(,資料群組成檔案)。使用資料庫模型來舉例說明:
3、資料對象(Data Object):性質相同的資料元素的集合,是資料的一個子集,例如字母表對象{a,b,c,…x,y,z}
4、資料類型(Data Type):資料的取值範圍和對資料進行操作的總和。資料類型規定了程式中對象的特性;程式中每個變數、常量或運算式的結果都應該屬於某種確定的資料類型。資料類型可分可兩類:一類是非結構的原子類型,如C#的基本類型;另一類是結構類型,其成分由多個結構類型組成,可以分解;如C#的數群組類型
。5、資料結構(Data Struct):相互之間存在一種或多種關係 的資料元素的集合。通常有4類基本資料結構:
1)集合(Set)
2)線性結構(Linear Structure)
3)樹形結構(True Structure)
4)圖狀結構(Graphic Structure)
資料結構(Data Structrue)簡記為DS,是一個二元組,DS=(D,S),其中D為資料元素的有限集合,R是資料元素之間關係的有限集合。
6、演算法(Algorithm):是對某一特定類型的問題的求解步驟的一種描述,是指令的有限序列。它具有有窮性(Finity)、確定性(Unambiguousness)、輸入(Input)、輸出(Output)和有效性(Realizability)。針對演算法優劣的評價標準包括正確性(Correctness)、可讀性(Readability)、健壯性(Robustness魯棒性)、已耗用時間(Running Time)和佔用空間(Storage Space)。
7、演算法的時間複雜度(Time Complexity):指演算法的已耗用時間與問題規模的對應關係。通常把演算法中基本操作重複執行的次數作為演算法的時間複雜度。它是與問題規模n相關的函數。記作T(n)=O(f(n)),例如T(n)=n(n+1)。
常見時間複雜度舉例:
1)、O(n)
x=n;y=0;while(y<x){ y=y+1;}
2)、O(n2)
for(int i=1;i<n;++i){
for(int j=0;j<n;++j){ A[i][j]=i*j; }}
3)、O()
x=n;y=0;while(x>=(y+1)*(y+1)){//即x=y2+1 y=y+1;}
關於演算法複雜度,推薦一篇好文http://www.matrix67.com/blog/archives/529
8、高等數學相關基礎知識
計量單位(Unit):位元組為B,位縮寫為b,MB為MB,KB縮寫為KB
階乘函數(Factorial Function):5!=5*4*3*2*1=120,特別地,0!=1
取下整和取上整(Floor and Ceiling):⌊3.4⌋=3(下整) ,⌈3.4⌉=4(上整)
模數操作符(Modulus):n=q*m+r ⇒m=n/q
對數(Logarithm):若ab=N,那麼數b叫做以a為底N的對數,記作logaN=b,其中a叫做對數的底數,N叫做真數。
遞迴(Recursive):演算法調用自己或間接調用自己。
========================================================
C#資料結構系列文章:
1、基礎知識
2、順序表Sequence List
3、單鏈表Singly Linked List
4、雙向鏈表Double Linked List
5、迴圈鏈表Circular Linked List
6、棧Stack
7、隊列Queue
8、串
9、數組Array
10、樹Tree
...
我的首頁:http://www.51obj.cn/