# 2024q1 Homework2 (quiz1+2) contributed by < `164253` > ## 第一周 ### 測驗一 #### 原理 用 quick sort 排序,一個 stack 紀錄哪些區間待排序以省略遞迴呼叫,做到類似 dfs 但加上尾遞迴優化的效果。 每次以第一個元素做 pivot 。 #### 延伸問題:優化 首先要避免的是 quick sort 的最差狀況,也就是正好相反排序時,原因是每次分治兩邊不均勻。 因此可以先找到中位數參照[我以前解的一道 leetcode 題目](https://hackmd.io/wX5w04CuTY-T4hosjmfosw?view#2QuickSelect),用 quick select 並自行實作,以三個元素為一組找出中位數,對這 $\lfloor\frac n3\rfloor$ 個中位數找中位數,並紀錄現在共有多少元素,可以不使用遞迴就實現,最終 $O(n+\frac n3+\frac n9+\cdots)=O(n)$ 求出