『數據』是計算機化的信息。它是對現實世界的事物采用計算機能夠識別、存儲和處理方式進行的描述。例如:整數、字符、聲音、圖像等都是『數據』。
『數據元素』是數據的基本單位,即數據集合中的個體。有些情況下也把『數據元素』稱做結點或記錄等。
『數據項』,一個數據元素可由一個或多個數據項組成,『數據項』是有獨立含義的數據最小可使單位。有時也把『數據項』稱做域、字段等。例如:學生管理系統中,可以把一個與學生有關的信息作為一個『數據元素』,它由學號、姓名、年齡等『數據項』,組成。
『數據結構』是相互之間存在一種或多種特定關系的『數據元素』的集合。數據元素之間的相互關系稱為結構。
數據結構包括:邏輯結構和物理結構。
數據的邏輯結構只抽象地描述數據元素間的邏輯關系,而不管其在計算機中的存儲表示方式。
數據的物理結構是數據的邏輯結構在計算機存儲器里的實現。數據的物理結構也稱為存儲結構。
數據的邏輯結構分為:線性結構和非線性結構。
線性結構,各數據元素之間的邏輯關系可以用一個線性序列簡單地表示出來,否則稱為非線性結構。
線性結構有線性表、棧和隊等。
非線性結構有樹、圖等。
『數據類型』是一個值的集合和定義在該值集上的運算集合的總稱。這個概念最早出現在程序語言中,每個程序語言都提供若干數據類型,用于定義變量、常量或表達式可以取值的范圍,以及可以施于它們的運算。
程序語言中的數據類型可以分為兩類:
一類是原子類型,其值是不可分解的。例如C語言中的整型、實型、字符型等。
另一類是結構類型,其值是由若干萬分按某種結構組成的,因此是可以分解的,并且它的萬分還可以是結構的。例如:數組的值由若干分量組成。
數據結構與程序語言中的數據類型有關,但兩者并非互相對應的。
一些最基本的數據結構,例如:記錄、數組、字符串等在很多情況下程序語言自身已經提供相應的數據類型實現,即指程序語言本身提供了對這些結構的描述手段和對它們的操作。
但還有許多數據結構,在很多程序語言中并沒有相應的數據類型,需要采用程序語言中提供的基本數據類型和供程序員構造結構化數據類型方法作為工具實現相應的數據結構。
抽象數據類型是指一個數學模型及定義在該模型上的一組操作。
算法是解決某一特定類型問題的有限運算序列。
一個算法應該具有下列特性:
(1)有究性。一個算法必須是在執行有限步之后結束。
(2)確定性。算法的每一步必須是確切地定義的,無二義性。
(3)可行性。算法應該是可行的,這意味著算法中描述的運算都是相當基本的,它們都是可以通過已經實現的基本運算執行有限次來實現的。
(4)輸入。一個算法有0個或多個輸入。
(5)輸出。一個算法有一個或多個輸出。
算法的設計可以避開具體的計算機程序語言,但算法的實現必須借助程序語言中提供的數據類型及其運算。
數據結構與算法是相輔相成的,它們是利用計算機解決實際問題時不可缺少的兩個方面。
數據的運算是定義在數據的邏輯結構上的,但運算的具體實現要在存儲結構上進行。
常用的運算有查找、插入、刪除、更新和排序等。
一種數據結構的優劣是由實現其各種運算的算法體現的。
對數據結構的分析實質上也就是對實現其各種運算的算法的分析。
在算法正確的前提下,算法的執行時間和存儲量需求是分析和評價一個算法的兩個主要方面。
——復習《數據結構基礎——譚洗強》第一章
這本書是我02年開始學的,當時學的還算認真,但學的也比較糊涂,現在重新復習一下。鞏固一下自己的數據結構與算法的知識。
接下來,將會找一些比較經典的數據結構,算法來研究分析。