QucikSort 快速排序 分治思想 遞迴
阿新 • • 發佈:2018-10-31
QucikSort
快速排序是排序演算法中效率較高的;
思路是取一個 值x,作為 基準值,然後從後往前 找到一個比它小 的值 放在左邊 第一次是( 放在它的位置上)(挖坑)
再從前往後去查詢一個比它大的值放在右邊, 依次迴圈,
直到 左邊的值全都小於 這個基準值,右邊的值全部大於這個基準值;
這個就直知道了中間值的位置 這個時候 0~left -x -right;
然後再用這個方法 對 左邊 和 右邊 分別進行分治;
public static void QuickSort(int[] array,int left,int right) { if (left<right) { int x = array[left]; int i = left; int j = right; while (j>i) { while (j > i) { if (array[j] <= x)//在右邊 找到一個比x小的值 { array[i] = array[j];//放到左邊 break; } else { j--; } } while (j > i) { if (array[i] > x)//在左邊找到一個 比x大的值, { array[j] = array[i];//放到 左邊 break; } else { i++; } } } //跳出迴圈 i==j ; 把基準書 放在中間 array[i] = x; // 此時 left -i -right QuickSort(array, left,i-1);//從0- left-1 QuickSort(array, left - 1, array.Length); } }