雖然曾修習過資料結構相關課程,但當時對許多概念的理解還不夠深入,因此希望藉由這次鐵人賽重新學習與整理。
本系列將從常見的資料結構開始,包括 Array、Linked List、Stack、Queue、Hash Table、Tree、Heap、Graph 等主題,重新理解各種資料結構的核心概念、特性、使用情境,以及時間複雜度等相關知識。
希望透過 30 天的整理與複習,不只是重新記住內容,而是能真正理解資料結構背後的思考方式,並建立更扎實的程式設計基礎。
打開社群軟體,你會看到好友名單;點進朋友的頁面,又能看到他的朋友。有些朋友彼此認識,有些人你追蹤了他、他卻沒有追蹤你。如果要用資料結構把這些人和人之間的關係存起...
Day 21 認識了圖的頂點、邊、度數和連通。圖畫在紙上一目了然,但電腦只認得記憶體:要怎麼讓程式「記住」誰和誰之間有邊? 今天介紹兩種常見的存法,一種是做一張...
Day 22 把圖存進了記憶體,接下來要在圖裡「逛一圈」:從某個頂點出發,沿著邊走,把走得到的頂點一個一個拜訪(visit,也就是讀取或印出它)。這件事稱為圖的...
圖上的邊除了表示兩個頂點相連,還可以帶著一個數字,稱為權重(weight)。權重可以是造價、距離、時間或費用,帶有權重的圖就是加權圖(weighted grap...
在打鋪克牌時,你會怎麼整理?有人會先找出最小的那張放到最左邊,再從剩下的牌裡找最小的;有人會從左到右一張一張看,把每張牌插進左手邊已經排好的牌之間。這兩種直覺的...
以 n 代表資料筆數,選擇、插入、氣泡排序在最壞情況下,比較次數都會隨資料筆數呈平方成長,因此時間是 O(n²)。 換個方式想:老師要全班依身高排隊,可以先請一...
兩位助教各自改完一疊考卷,都已經依分數由低到高疊好,現在要合成一疊。最省事的做法是:比較兩疊最上面那張,把分數低的放到新的一疊,一直重複到兩疊都拿完。每比較一次...
昨天的選擇排序每一輪都要把剩下的資料從頭看到尾,才找得出最小值,要做 n − 1 輪,總共 O(n²),問題出在「找最值」太慢。 累堆(heap)正好擅長這件事...
目前介紹過的排序方法,有最壞要 O(n²) 的選擇、插入、氣泡排序,平均 O(n log n) 的快速排序,以及最壞 O(n log n) 的合併與累堆排序。收...