最近跟同事討論到QuickSort這個演算法,因為網路上找到的範例好像都有些問題,就自已試著實作一次來瞭解一下QuickSort的原理。 正好手邊有一本「 演算法之道:讓你學不會演算法都難 」裏面有講到這個排序演算法,實作一下,還真的可行。 以下是實作的程式碼: public class QuickSort { public static void SortCore( ref int [] src, int start, int len) { if (start < len) { DumpArray( "Start sort" , src); int pivotPos = Partition( ref src, start, len); SortCore( ref src, start, pivotPos); // 對左邊的資料排序 SortCore( ref src, pivotPos + 1, len); // 對右邊的資料排序 } } protected static int Partition( ref int [] src, int start, int len) { string msg = string .Format( "Partition From {0} to {1}" , start, len); if (start >= len) return start; // 不用排序 int pivotPos = start; int pivotValue = src[pivotPos]; int i = pivotPos; ...