iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0
Software Development

奶茶裡藏的資料結構(Kotlin範例)系列 第 3

演算法離不開資料結構

  • 分享至 

  • xImage
  •  

「Queue真的有這麼簡單嗎?課堂上明明講得好複雜。」我嘆了口氣,「一開始我也有努力聽啊,可是越聽越糊塗,最後就失去意識,才不是故意睡覺的。」

「嗯⋯⋯規則其實很簡單,真正複雜的是各種組合和應用吧。」小孩伸出手在空中比劃:「Queue在意的是操作規則——怎麼新增、怎麼刪除、怎麼維持處理的順序。至於資料到底用什麼方式存,那就是其他結構的工作了。」

「而且資料結構可是演算法的基礎。如果資料結構沒學好,演算法就會一團亂。」

「會影響到演算法喔?」我挑眉。

「當然。演算法本質上就是在計算:怎麼省時間、省空間,還能正確完成任務。所以你必須清楚各種結構在新增、刪除、排序、搜尋時的時間和空間消耗。」

「這麼說的話,Queue應該很省空間吧?不是說它是線性嗎?」

「是啊。Queue裡有多少人,就得存多少人,所以空間複雜度是 O(n)。」小孩停了一下,歪頭看著我,「不過⋯⋯你知道什麼是 O(n) 嗎?」

「你覺得呢?我沒學過演算法,當然不知道囉。」眼見除了被困在這個奇怪空間外沒其他危險,我的語氣也放鬆起來,開始有點嘴硬。

「Big O 是一種表示『上限』的方式。n 就代表 Queue 裡的人數,所以 O(n) 的意思,就是這個結構的空間會隨著 n 成正比成長。」

「等一下,聽你這麼說,好像還有其他不是 O(n) 的?」

小孩笑了,「你反應很快嘛。大部分常見的結構確實都是 O(n),不過有個特例叫 Graph。如果用鄰接矩陣來表示,它的空間會直接膨脹到 O(n²)。」

「好肥啊⋯⋯」我忍不住咋舌。

「是啊。但再肥也有存在的理由。有些問題,只有 Graph 才能解決。」


上一篇
Queue就是這麼簡單
系列文
奶茶裡藏的資料結構(Kotlin範例)3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言