Yourui

@Yourui

Joined on Jan 9, 2023

  • contributed by < yourui1017 > 〈因為自動飲料機而延畢的那一年〉的啟發 「資工系的學生不會寫程式,機械系的學生不會做機械」 人不付出犧牲,就得不到任何回報。如果要得到什麼,就必須付出同等的代價,這就是鍊金術的基本原則,等價交換。當時我們深信著,這就是這世界的真理。–––《鋼之鍊金術師》 對於這兩句話特別有感受。雖然目前已經修習過許多課程,但往往都只是把課本上的知識死背硬背,求的就只是課程的高分,雖然成績單上有好看的成績,但根本不了解學習這些課程背後的意義,在面對真實世界的考驗時,無法應用學習的知識解決當前的問題。 若想要貫通學習課程的意義必須要擁有獨立思考的能力並解決實作時遇到的困難,沒有付出犧牲是無法解決面對的問題的,只有絞盡腦汁不被問題擊敗,才能夠一步一步慢慢成長。
     Like  Bookmark
  • contributed by < yourui1017 > 開發環境 $ gcc --version (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 39 bits physical, 48 bits virtual
     Like  Bookmark
  • contributed by < yourui1017 > 第一週測驗題 測驗1 ::: success 解釋程式碼的運作原理,提出改進方案並予以實作。 使用 Linux 核心風格的 List API 改寫上述程式碼,並針對鏈結串列,提出可避免最差狀況的快速排序實作,應設計效能評比的測試程式。 :::
     Like  Bookmark
  • contributed by < yourui1017 >
     Like  Bookmark
  • tim_sort運作原理 Timsort 致力於從以下三個方面,改進合併排序演算法: 加快合併(merge)過程 減少進行合併的次數。 在某些特定情況下,尋找比合併排序更有效的排序方法 識別出資料中已排序的子序列 (這些子序列稱為 run)。若 run 的數量等於或者略小於 2 的冪,效率會最高;若略大於 2 的冪,效率就會特別低。控制每個 run 的長度,定義一個 minrun (最小運行長度),用以表示每個 run 的最小長度,若長度太短,就用二分插入排序,將 run 後面的元素插入到前面的 run 裡面。 選擇 minrun 的策略是 Timsort 的關鍵,其中一個實務上的方法是,取資料長度 N 的前 6 位,若剩餘位中任何一位被設置,則加 1。這主要是為了在處理隨機數列時,使得 N 能夠被 minrun 切分成 2 的冪的 run,以便在合併時達到最佳平衡。
     Like  Bookmark
  • contributed by < yourui1017 > Reviewed by yu-hsiennn 可以利用 list.h 裡面的 API 來實作,以精簡呈現出來的程式碼。 開發環境 $ gcc --version (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 $ lscpu
     Like  Bookmark