2009年10月5日 星期一

1.1 何謂資料結構

何謂「資料結構」?這是一個基本問題,也是最廣泛的問題,事實上,在不同的時代中,對於此問題,也存在著不同的答案。在本節中,我們將以不同的角度來說明何謂「資料結構」。
「資料結構」是電腦程式設計中,常使用的資料項目,而資料結構之課程的目的在於介紹這些資料項目。這些資料項目包含「串列」、「樹」、「圖」等等,當進行程式設計時,我們常常需要取用這些資料結構來完成應用的設計,舉例如下:
資料結構應用一:樂透歷史記錄
假設我們需要記錄樂透開獎之歷史記錄,也需要將各期獎號進行遞增排序,則可以使用「陣列」這種資料結構來完成,因為陣列可以依照順序存放多個相同的資料型態,例如整數,並且新型態的陣列(例如C#的陣列)也提供了排序功能。
資料結構應用二:GPS
GPS衛星定位導航系統是目前常見的車用電腦設備,假設我們要從高雄出發抵達宜蘭,則GPS能夠找出一條最短行程作為建議並引導您如何前進。而GPS事實上是將實際地圖轉化(或抽象化)為資料結構的「加權圖」,並藉由「最短路徑」運算找出最短行程。由實際的經驗可知,GPS提供的路徑常常會出現各種問題,例如有時會帶您走崎曲的山路或嚴重塞車的路段,這些問題是由於將實際地圖(Map)轉化為加權圖(Weighted Graph)時,考量的因素不夠所導致。
資料結構應用三:資料庫
假設我們需要儲存全台灣的人口資料並能夠快速尋找所需資料。大量資料一般會使用資料庫來存放,而為了要讓搜尋資料能夠快速完成,通常會製作索引,而資料庫的索引則通常使用「B+樹」這種資料結構來設計。

如果您只學習過一般的程式設計,則以上的三個範例,您可能了解何謂「陣列」,但並不了解「加權圖」與「B+樹」。而此時若要您設計一個GPS系統,就會不知如何下手,因此,本書與「資料結構」或「演算法」之課程的目的,就是讓您了解各種資料結構以及了解各種運算應該如何設計。因此,在本書中,我們不但會介紹何謂「加權圖」與「B+樹」,也會介紹如何在「加權圖」中尋找「最短路徑」。除此之外,我們也會讓您對於「陣列」有更深一層的認識。

1.1.1 資料與結構化(下一篇)

沒有留言: