計算機科學的各種定義是對實踐經驗的總結,摻雜了人的主觀意識,不像自然定理一樣亙古不變,所以建議從歷史發展的角度,結合實踐經驗理解,不要死記硬背,
資訊與資料
資料是資訊的載體,是描述客觀事物的數字、字符、圖片、聲音等符號的集合,在計算機中以位元的形式存盤,
資訊是資料的內涵,
少量資料可能包含很多資訊,在大資料時代,似乎所有的資料都可能有用,正如黑格爾所說的“存在即合理”,
資料、資料物件、資料元素、資料項之間的關系
資料元素是資料的基本單位,也稱為元素、記錄等,通常作為一個整體考慮,
資料項是組成資料元素的具有獨立含義的、不可分割的最小單位,
資料物件是性質相同的資料元素的集合,
資料型別
資料型別的概念最早出現在高級程式設計語言,發源于硬體,是一種解釋計算機記憶體中資訊中的手段,
資料型別規定了變數或運算式所有可能取值的范圍,以及在這些值上允許進行的操作,
抽象資料型別(Abstract Data Type,簡稱ADT)是資料型別的數學抽象,是一個數學模型以及定義在該模型上的一組操作,不考慮其具體實作,
對于硬體工程師來說,資料型別和抽象資料型別是不一樣的,
從硬體角度看,CPU會提供一些資料型別,比如字、整數、浮點數,他們直接由電路系統實作,
電路工程師設計一個CPU,要考慮“位”、“位元組”,“字”等原子型別,1位元組是8位,1個字可能是32位、64位,甚至更大,要考慮如何對整數、浮點數、字符等進行編碼,并根據編碼規則設計加法器、乘法器等,
可能所有的CPU都提供int型別,但如果編碼方式不同,能在其上進行的操作不同,電路實作不同,就不能算作同一種資料型別,
高級程式設計語言提供的資料型別,隱藏了底層的細節,最終通過編譯器或解釋起轉化為機器語言的資料型別來實作,
對于使用高級語言的資料型別的用戶來說,
資料結構
資料結構是(資料物件)與(物件中資料元素之間的關系)的集合,
形式定義如下:
Data Structure = ( D, S )
D是資料元素的有限集,S是D上關系的有限集,
以下幾條來自不同教材對資料結構的解釋,對比體會,
- 資料結構是相互之間存在一種或多種特定關系的資料元素的集合,換句話說,資料結構是帶“結構”的資料元素的集合,“結構”就是指資料元素之間存在的關系,1
個人認為,此定義將關系作為集合的定語不夠嚴謹,- 資料結構是資料物件,以及存在于該物件的實體和組成實體的資料元素之間的各種聯系,2
- 資料結構是ADT的物理實作,3
結構化程式設計的一般原則,程式=資料結構+演算法,就是先分析資料的數學模型和要對其進行的操作,確定如何存盤資料和怎么實作操作,在這之后撰寫程式就很容易了,
資料結構,作為一門課程,這門課研究的是資料的邏輯上的組織方法和物理上的存盤方法,也就是分析資料元素之間的抽象關系,再研究如何用計算機表示,這門課不是程式設計課2.0,而是要通過精心設計資料結構,為程式帶來更高的運行或者存盤效率,
所以資料結構包含邏輯結構和存盤結構兩個層次(不是并列),
撰寫程式將邏輯結構映射成存盤結構,并實作各種操作,
邏輯結構從邏輯關系上描述資料,也就是資料的數學模型,他與資料的在計算機中的存盤無關,
任意一個資料元素可以和n(n>=0)個資料元素有邏輯上的關系,
- 多對多的關系為圖結構或網狀結構;
- 一對多為樹結構;
- 一對一為線性結構;
- 除了同為一個集合外,別無其它關系為集合結構,
可以認為,圖結構表示的關系最復雜;樹是一種特殊的圖;線性結構是一種特殊的樹結構,也是一種特殊的圖結構;集合是圖的極端情況,
存盤結構是邏輯結構在計算機中的物理映射,把資料存盤到計算機中,通常既要存盤資料元素,又要存盤資料元素之間的邏輯關系,
未完待續
嚴蔚敏,李冬梅,吳偉民,資料結構(C語言版)(第二版) ??
Sartaj Sahni,資料結構、演算法與應用 ??
Clifford A.Shaffer, 資料結構與演算法分析 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259228.html
標籤:其他
上一篇:變數,作用域,運算子
下一篇:高精度加法
