資料結構

含有「資料結構」共 110 篇內容
全部內容
發佈日期由新至舊
幾種常見的AI應用類型: 1. 文字AI應用; 2. 圖像AI應用; 3. 音訊/語音AI應用; 4. 影像AI應用; 5. 複雜格式AI應用; 6. 總結:隨著AI應用蓬勃發展,多模態終將成為日常風景。
Thumbnail
在電腦的世界裡,資料不只是單純的數字或文字,而是需要被有系統地組織與管理,才能有效地被儲存、搜尋與處理。這一章的重點,就是理解電腦如何「整理資料」──也就是資料結構(Data Structure)。 陣列(Array)與串列(List)開始,了解如何在記憶體中連續或分散地儲存資料。接著會介紹佇列(
Thumbnail
1990 年,提姆·柏內茲-李 (Tim Berners-Lee) 在 CERN 寫下了全球資訊網 (World Wide Web) 的第一個標準。1993 年,Mosaic 瀏覽器誕生,讓網際網路從學術象牙塔走入了尋常百姓家。隨之而來的,是人類歷史上從未有過的資訊大爆炸。
1970 年代,電腦走出實驗室,進入全球商業。但隨著軟體規模的爆炸性增長,程式碼變得難以維護,引發了「軟體危機」。為解決這場混亂,Niklaus Wirth 和 Tony Hoare 等先驅提出了「抽象資料型態」(ADT) 革命,將資料結構從零散的技巧「封裝」成可靠的工程模組。
1960 年代,電腦走出純粹計算室,進入企業、大學與國防核心。軟體系統(如作業系統、編譯器)的複雜度爆炸增長,50 年代的陣列與鏈結串列已不敷使用。這個時代見證了第一次大分歧:一派是以高德納 (Donald Knuth) 為首的「理論派」,他們從數學中借來「樹」(Tree) 與「圖」(Graph)。
在 1950 年代,電腦是重達數噸、處理能力不如現代計算機的巨型機械。在那個「資料結構」一詞尚不存在的年代,程式設計師只有一個最直觀的工具:陣列 (Array),它將資料如士兵般整齊排列。然而,當 Allen Newell 與 Herbert Simon 試圖打造能「思考」的程式時,這套系統崩潰了。
「快取未命中 」是 CPU 的效能殺手。當 CPU 在高速小冰箱(快取)中找不到資料,就必須停工,去慢速大倉庫(RAM)取貨,這會導致 100 倍的延遲。三種主要元兇:不可避免的「強制性失誤」(冷啟動)、因資料太多導致的「容量性失誤」(冰箱太小),以及最棘手的「衝突性失誤」(儲存規則衝突)。
BST 是 O(log N) 搜尋的「理論原型」,但輸入有序時會退化成 O(N)。Treap 巧妙地加入「隨機優先級」,利用機率來維持樹的統計平衡,是對演算法的優化。B-Tree 則是為了解決硬碟 I/O 緩慢的「硬體現實」而生,它使用極度「矮胖」的巨大節點,大幅降低樹高,是現代資料庫的基石。
本文深入探討了演算法分析中「平均情況分析」與「攤銷分析」的根本區別。文章以動態陣列和快速排序為例,生動地闡述了前者基於機率,提供的是對隨機輸入的期望值,允許極端情況的存在;後者則基於操作序列,直面最壞情況,提供的是對整體效能的保證。
探討為何在相同的 Big O 時間複雜度下,Array 的執行速度遠超 Linked List。文章深入剖析 CPU Cache 的運作原理,包括時間局部性與空間局部性,以及快取命中未命中的影響,解釋 Array 如何連續記憶體配置優化快取效能,而 Linked List 則因指標跳躍導致效能低落。