資料結構是什麼東西?(2)

Mino chen
Jun 20, 2021

--

先來個免責聲明,我理解的東西也許跟你理解的不同,如果我有寫錯的部分,再麻煩溫柔的留言在下面,但我這裡可能不太會用太學術名詞,畢竟我還是提倡如果資訊能讓所有人都懂,勢必要使用親民的舉例,就這樣囉!

然後以下是我根據這本書所做的導讀,有興趣的同胞也可以自行去買或租來看,我只是多加了一點我的翻譯但覺得他寫的很淺白(讚讚)

http://www.deepstone.com.tw/list/0j344114243108869775

以下就分成資料特性、資料結構、資料結構分類、常見的資料結構,四個部分做探討 :

資料的特性是什麼?

我們平常能想像到的資料就是一張一張A4紙然後儲存在一個像圖書館的地方,其實是一樣的道理,我們把資料一筆一筆存起來,它勢必就會佔據一些空間,而我們應該來了解一下,它佔據了什麼?
1. 位元(Bit): 就像台幣以元為單位,電腦的儲存最小單位是 Bit 就像機器語言中的 0 和 1 。

2. 位元組(Byte): 表示一個字組,一個字組佔據 8 Bit 空間。

3. 欄位: 數個 Byte 組成,類似你在 excel 欄位一樣。

4. 紀錄(Record):相關連的欄位就會組成有意義的基本單位,例如身分證裡有姓名、 身分證字號、出生年月日等等,也可以想成 excel 表裏儲存某個人身分證的數據。

5. 檔案:當很多人的身分證都存在同一個檔案裡,共用同樣的欄位,就成了檔案,像是 excel 裡的某個 sheet。

到了這裡好像漸漸可以看出資料庫裡的資料表的雛形,那麼在資料的特性又分成了:

數值的資料 : 就是數字

文數資料 : 就是字串

資料的結構的分類是什麼?

Algorithms + Data Structures = Programs 圖靈獎得主 Nicklaus Wirth

別怕我也是第一次看到書裡寫的,我腦袋怎麼可能隨便就有一個人說出的名言XD 總之就是 :

演算法 + 資料結構 = 程式

好的不知道有沒有跟我一樣初入茅廬的孩子,一直以為所謂的演算法就是一定要算出什麼費氏數列、河內塔、三橋(或六橋)問題 balabala 等等彷彿在上數學課的東西才叫演算法,正確來說,所謂的演算法就是你的資料經過你巧手寫出符合功能的資料處理,那就叫演算法囉!所以大家不要被演算法給嚇到,就算你每天規劃你出門到上班的路線,也是一種演算法,只是為了訓練我們更厲害的演算法,讓我們寫程式處理資料時會更熟練,通常會拿一些題目作為練習。

資料結構其實很多種類,但大方向可以分類為以下幾種 :

基本結構

一群集合,沒有任何次序,只有存在。(像是一盤散沙,或是一籃沒有整理過的雜物)

線性結構

一對一的資料存在,有先後順序的集合,像是陣列(Array)啊、串列(List)啊、堆疊(Stack)啊、佇列(Queue)等。

階層結構

一對多的資料存在,像是二元搜尋樹(有點像妳小時候看的祖譜那樣)

https://www.wikiwand.com/zh-tw/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84

圖型結構

多對多的資料存在,不是單向的存在彼此間會有關聯,像是 google map 的觀光景點。

https://sites.google.com/site/zsgititit/home/jin-jiec-cheng-shi-she-ji-2/tu-xing-jie-gou

看完了這些,又對於之前聽過的一對一、一對多、多對多有了新的想法,為了取得資料與資料之間的關聯,正確的資料結構處理也相對重要。

有時候你會發現你處理過的資料越多,也許你沒看過這些,但你就有一種 fu (?) 就是你一直都往對的方向前進的感覺,但如果你想把每個知識連起來的話,還是需要常常去翻閱一些基礎的概念。

那麼今天練鍵盤就到這裡了,改天再見。

--

--