歸并排序屬于分而治之的思想,對數組一分為二,分別對兩部分排序,再做合并。有幾個關鍵點:
1. 一分為二后,每部分做遞歸的歸并排充,直到遇到一個元素為止。
2. 合并時一定是將兩個排好序的子數組做合并,類似于插入排序。
算法實現如下:
函數主體
合并函數
這里面有兩個問題:merge 插入排序時需要 make 一個輔助slice, 并做數據拷貝,對于大數組會 make 很多次,對GC有一定壓力。插入排序時一定要處理好子數組邊界問題。
20160706再好好想想能不能更高效? 特別是輔助slice,看能不能去掉。