Luke a Pro

Luke Sun

Developer & Marketer

🇺🇦
EN||

排序與 TopK:概覽

| , 1 minutes reading.

排序與 TopK:秩序的架構

混亂的代價

想像一個倉庫,裡面有 100 萬件物品隨意散落在地板上。如果妳想找到「最貴的 10 件商品」,妳必須走遍整個倉庫,拿起每一件物品進行比對。

秩序不是免費的。我們花費能量(CPU 週期)對數據進行排序,是為了在以後的搜尋和報表生成中節省能量。在軟體工程中,排序 是存在感最高的「預計算」行為。

選擇的策略

世界上沒有「完美」的排序演算法。只有針對妳特定約束條件的「正確」演算法:

策略靈魂 / 隱喻代表演算法最佳應用場景
分區 (Partitioning)激進的領袖
快速將世界劃分為「我們」與「她們」。
快速排序 (QuickSort)通用目的
極快、原地排序、標準實作。
歸併 (Merging)偉大的統一者
將小的、穩定的群體合併為更大的整體。
歸併排序 (MergeSort)穩定性 / 分散式
當相等元素的原始順序至關重要時。
競爭 (Competition)生存競賽
只有最強者才能登上堆積的頂峰。
堆積排序 / TopK記憶體受限
只需要極小的額外空間,或提取 TopK。
選擇 (Selection)幸運的偵探
無需排序全部,就能精準找到第 K 個。
快速選擇 (Quickselect)部分排序
尋找中位數或「前 100 名」。
擴展 (Scaling)記憶體建築師
管理那些大到無法裝進大腦(記憶體)的數據。
外部排序大數據
在磁碟上對數 TB 的日誌進行排序。

排序的三大法則

  1. 複雜度是基石: O(N2)O(N^2) 是玩具;O(NlogN)O(N \log N) 才是工具。
  2. 穩定性是靈魂: 如果兩個元素相等,她們是否保持原始順序?在商業應用(如先按「日期」排,再按「價格」排)中,穩定性是剛需。
  3. 空間是成本: 妳是在「原地」折騰(不佔用額外空間),還是需要一個臨時的臨時倉庫?

小結

在本章中,我們將看到電腦科學家如何將「洗牌」這一混亂行為轉變為一門精密科學。我們將明白:有時候妳需要給萬物排序才能洞察真相,但有時候,妳只需要找到那些「被選中的少數」(TopK)。

讓我們從程式設計界的「速度之魔」開始:快速排序