問題詳情

66. 以下哪個排序方法使用(divide and conquer)策略?
(A)插入排序(Insertion sort)
(B)合併排序(Merge sort)
(C)記數排序(Counting sort)
(D)泡沫排序(Bubble sort)

參考答案

答案:B
難度:計算中-1
書單:沒有書單,新增

用户評論

【用戶】不叫賭俠的陳小刀

【年級】高三下

【評論內容】在合併排序中,原始的數列被分成兩個較小的子數列,然後遞迴地對子數列進行排序。排序完成後,再將兩個已排序的子數列合併成一個有序的數列。這個過程中,使用了分治法的策略,將原始問題分解成較小的子問題並解決。

【用戶】牛奶

【年級】高三上

【評論內容】Divide and conquer :是一種設計演算法的思維模式,將問題切割為兩個以上的子問題,使用相同的解決邏輯處理各子問題,所有小問題的解合併起來即為原始問題的解。整個處理過程可以分為以下三個階段:Divide 分解:將一個問題分解為一系列子問題 (subproblem)。Conquer 解決:使用相同邏輯解決各子問題,如果問題夠小,可以直接求解。Combine 合併:將子問題的結果合併。在第二個階段,以相同邏輯解決子問題,很容易可以聯想到遞迴,子問題夠小時,可以直接求解,就如同定義遞迴的終止條件 (base case or bottom case) 。合併排序法(Merge Sort)原理是會先將原始資料分割成兩個資料列,接著再將兩個資料繼續分割成兩個資料列,依此類推,直到無法再分割,也就是每組都只剩下一筆資料時,再兩兩合併各組資料,合併時也會進行該組排序,每次排序都是比較最左邊的資料,將較小的資料加到新的資料列中,依此類推,直到最後合併成一個排序好的資料列為止。時間複雜度 = 分割步驟數 + 合併步驟數分割:分割含有 n 個資料需要 n-1 次,O(n)。合併:合併的兩邊共用 n 個元素,每次都是比較最左邊的資料,將較小的加到新陣列中,因此每次排序與合併必須經過 n 次,每回合log n次,O(log n)。平均時間複雜度為: O(n log n)

【用戶】不叫賭俠的陳小刀

【年級】高三下

【評論內容】在合併排序中,原始的數列被分成兩個較小的子數列,然後遞迴地對子數列進行排序。排序完成後,再將兩個已排序的子數列合併成一個有序的數列。這個過程中,使用了分治法的策略,將原始問題分解成較小的子問題並解決。

【用戶】牛奶

【年級】高三上

【評論內容】Divide and conquer :是一種設計演算法的思維模式,將問題切割為兩個以上的子問題,使用相同的解決邏輯處理各子問題,所有小問題的解合併起來即為原始問題的解。整個處理過程可以分為以下三個階段:Divide 分解:將一個問題分解為一系列子問題 (subproblem)。Conquer 解決:使用相同邏輯解決各子問題,如果問題夠小,可以直接求解。Combine 合併:將子問題的結果合併。在第二個階段,以相同邏輯解決子問題,很容易可以聯想到遞迴,子問題夠小時,可以直接求解,就如同定義遞迴的終止條件 (base case or bottom case) 。合併排序法(Merge Sort)原理是會先將原始資料分割成兩個資料列,接著再將兩個資料繼續分割成兩個資料列,依此類推,直到無法再分割,也就是每組都只剩下一筆資料時,再兩兩合併各組資料,合併時也會進行該組排序,每次排序都是比較最左邊的資料,將較小的資料加到新的資料列中,依此類推,直到最後合併成一個排序好的資料列為止。時間複雜度 = 分割步驟數 + 合併步驟數分割:分割含有 n 個資料需要 n-1 次,O(n)。合併:合併的兩邊共用 n 個元素,每次都是比較最左邊的資料,將較小的加到新陣列中,因此每次排序與合併必須經過 n 次,每回合log n次,O(log n)。平均時間複雜度為: O(n log n)