iT邦幫忙

data structure相關文章
共有 94 則文章
鐵人賽 Software Development DAY 6

技術 [Day 06] Linear Search 與 Binary Search

前言 在昨天的文章中,我們舉例的訂單資料設定為「已經照建立時間排好」,但整篇文章卻沒有提到這個特性,談到 Search 時,我們說時間複雜度是 O(N),原因...

鐵人賽 Software Development DAY 5

技術 [Day 05] Array

前言 今天要介紹的是大家很常聽到也很常使用的 Array~ 先從一個很日常的問題開始,假設我們手上有一百萬筆訂單資料,想拿到 orders[999999] 也...

鐵人賽 Software Development DAY 4

技術 [Day 04] 演算法正確性

前言 前面兩篇用 Big O 和 Space Complexity 描述一個做法的時間與空間成本,不過一個做法即使又快又省,仍然可能算出錯誤答案。 那要怎麼知...

鐵人賽 Software Development DAY 3

技術 [Day 03] Space Complexity

前言 上一篇文章介紹了 Big O,我們學會用「輸入規模增加時,操作次數會怎麼成長」來描述一個做法的成本,不過那篇從頭到尾數的都是「操作次數」,也就是 Tim...

鐵人賽 Software Development DAY 2

技術 [Day 02] Big O 是什麼?

前言 昨天簡單介紹了資料結構與演算法,提到同一份資料可用不同方式組織,而不同的資料結構與解決步驟也可能產生不同的運算成本,不過當我們說某個方法「比較有效率」時...

鐵人賽 Software Development DAY 1

技術 [Day 01] 系列文動機與大綱

嗨大家好!我是 Monica,第一天一樣來講講系列文動機與大綱,談談未來的內容規劃。 關於分享主題 再次嘗試鐵人賽,希望能藉此督促自己學習新東西~這次的主題很經...

鐵人賽 JavaScript DAY 20

技術 Day 19|找零錢為什麼很自然會想到 Greedy?

前幾篇,我們一路從 dependency、propagation 談到 Graph 本身也可能隨著系統執行而改變。到這裡,我們已經不只是在描述資料結構,也開始面...

鐵人賽 JavaScript DAY 19

技術 Day 18|當 Graph 本身也會改變,問題有什麼不同?

上一篇,我們談到 dependency 不只可以描述: 誰必須先完成? 也可以幫助我們回答: 當某個東西改變時,哪些地方可能需要跟著重新計算? 例如:...

鐵人賽 JavaScript DAY 18

技術 Day 17|改一個東西,為什麼會影響很多地方?

上一篇,我們把 npm 專案看成了一張 Dependency Graph。當一個 package 依賴另一個 package 時,我們可以把關係畫成 A → B...

鐵人賽 JavaScript DAY 17

技術 Day 16|你的 npm 專案其實是一張 Dependency Graph

前幾篇,我們已經從「事情的先後順序」一路談到有向圖、Cycle、DAG 與拓樸排序。例如: A → B → C 代表: B 依賴 A,C 又依賴 B 這種...

鐵人賽 JavaScript DAY 15

技術 Day 14|A 等 B,B 又等 A:Cycle 為什麼麻煩?

上一篇我們開始把「事情必須按照先後順序完成」畫成有向圖。例如: 買食材 → 備料 → 烹煮 → 上桌 箭頭代表 dependency: A → B 可以理解...

鐵人賽 JavaScript DAY 14

技術 Day 13|為什麼有些事情一定要先做完?

前幾天我們一直用 Graph 描述「東西之間怎麼連在一起」。例如捷運路網: 我們在意的是: 從 A 能不能走到 F?哪條路比較短?哪條路花的時間比較少? 但...

鐵人賽 JavaScript DAY 12

技術 Day 11|DFS 和 BFS 到底哪個比較好?

前兩篇,我們分別看過了兩種很常見的 Graph 搜尋方式: Graph + Stack → DFS Graph + Queue → BFS DFS 選擇先沿著...

鐵人賽 JavaScript DAY 11

技術 Day 10|捷運最少經過幾站:為什麼 BFS 很適合?

上一篇談到 DFS 時,我們做了一個很明確的選擇: 先沿著一條路一路走到底 這是一種搜尋策略。但如果今天問題換方向了呢? 假設我們面前不是迷宮,而是一張捷運...

鐵人賽 JavaScript DAY 10

技術 Day 9|在迷宮裡一路走到底:DFS 在做什麼?

昨天我們終於把 Graph 從紙上的線條,變成程式真的能保存的資料。例如一張簡化的路網: 我們可以用 Adjacency List 表示: const grap...

鐵人賽 JavaScript DAY 9

技術 Day 8|Graph 在程式裡到底長什麼樣子?

上一篇我們用捷運路網理解 Graph。例如有幾個站點: 如果把它看成 Graph: 每個車站是一個 node 站與站之間的連接是一條 edge 畫出來很直...

鐵人賽 JavaScript DAY 8

技術 Day 7|捷運路網為什麼不是一棵 Tree?

上一篇我們從資料夾開始認識 Tree。像這樣: Documents ├─ Work │ ├─ report.pdf │ └─ meeting.md │ └─...

鐵人賽 JavaScript DAY 7

技術 Day 6|資料夾為什麼看起來像一棵 Tree?

前幾篇我們一直在問一個很類似的問題: 資料要怎麼拿? Queue 說:最早進來的先拿 Stack 說:最後進來的先拿 Priority Queue 說:最...

鐵人賽 JavaScript DAY 6

技術 Day 5|通訊錄為什麼不用從第一個人開始找?

前面幾篇,我們其實一直在討論同一類操作需求: 下一個要拿哪一筆資料? Queue 的答案是最早進來的那一筆。 Priority Queue 的答案是現在最...

鐵人賽 JavaScript DAY 5

技術 Day 4|為什麼「復原」要從最後一步開始?

上一篇談 Priority Queue 時,我們看到了一件很重要的事: 資料不一定按照進來的時間被處理,「誰先被拿出來」本身就是問題的一部分。 Queue...

鐵人賽 JavaScript DAY 4

技術 Day 3|急診室為什麼不能只用 Queue?

上一篇我們從超商結帳、客服電話與列印工作認識了 Queue。簡單複習一下 Queue,例如四個人依序進入隊伍: A → B → C → D 那麼處理順序自然就...

鐵人賽 JavaScript DAY 3

技術 Day 2|排隊為什麼需要 Queue?

你走進超商,前面已經有三個人在排隊。你站到隊伍最後面,等待前面的人依序結帳。我甚至不用特別講,你也能腦補這個機制: 第一個來的人先結帳 第二個來的人接著結帳...

鐵人賽 JavaScript DAY 2

技術 Day 1|資料結構到底在解決什麼問題?

如果要用 JavaScript 儲存一群資料,我們其實很容易想到一個最直覺的答案: const users = ["Alice", &quo...

鐵人賽 JavaScript DAY 1

技術 當 AI 已經會寫程式,我們為什麼還要學資料結構與演算法?

現在如果想寫一個 Queue、Binary Search,甚至 Dijkstra,最簡單的方法可能已經不是打開課本,而是直接問 AI。幾秒鐘後,我們就能得到一段...

鐵人賽 Software Development DAY 12

技術 Day 12 - 堆疊(Stack)

今天要來進到新的單元~還記得我們在第一天有簡單提到 Stack 嗎?接下來要更加了解他 堆疊(Stack)是什麼? 堆疊是一種只能在同一端(稱為頂端,Top)進...

鐵人賽 Software Development DAY 7
消除你程式碼的臭味 系列 第 7

技術 Day 7- 資料結構至上:好程式碼的關鍵思考

消除你程式碼的臭味 Day 7- 資料結構至上:好程式碼的關鍵思考 搞錯了資料結構,寫的就不是程式碼,是日後要爆炸的地雷。 Bad programmers...

鐵人賽 生成式 AI DAY 6

技術 day6 LLM結構化輸出:精確控制與系統串接的利器

前言 前天和昨天,我們進行promptTemplate和langServe快速部屬api的操作範例,但今天介紹及說明另外一個核心功能,結構化輸出structur...

鐵人賽 自我挑戰組 DAY 30

技術 Day30 - 從競賽程式學習資料結構與演算法-最後總結

終於到最後一天了,在這過程中有著無數次催隊友快點發文,也有幾次差點忘記需要寫文,甚至最近因為社團的事情和比賽沒有什麼時間可以寫文章,所以內容越來越簡單,不過終究...

鐵人賽 自我挑戰組 DAY 14

技術 Day-14 學習資源分享

前言 今天是中秋節,所以就分享一些學習資源以供大家自學、參考,以下資源皆為免費內容,請安心服用 講義 以下是我過去所使用過的學習資源,有些因為難度太高半途而廢,...

鐵人賽 Software Development DAY 7

技術 【Java】HashMap 的工作原理(下)

昨天介紹了 HashMap 將 key 定位到 bucket 的過程。而本文主要解說的是,在一個 bucket 中,要如何找到 key 所對應的節點,進而討論為...