1. 程式人生 > >c# 快速排序

c# 快速排序

        public  void QuickSort(int[] array, int head, int last)
        {

            int left = head;//左側遊標
            int right = last;//右側遊標
            if (left >= right) return;//排序終止條件
            int key = array[head];//最左側的為基準值
            while (left < right)
            {
                //從右側向左查詢首個小於基準值的值array[right]
while (left < right && array[right] >= key) { right--; } //從左側向右查詢首個大於基準值的值array[left] while (left < right && array[left] <= key) { left++; } //左側大於基準值的array[left]與右側小於基準值的array[right]交換位置
if (left < right) { int temp = array[left]; array[left] = array[right]; array[right] = temp; //array[left] = array[left] ^ array[right]; //array[right] = array[left] ^ array[right];
//array[left] = array[left] ^ array[right]; } } //一輪探測結束,基準值歸位(排序後的真實位置) array[head] = array[left]; array[left] = key; QuickSort(array, head, left - 1); QuickSort(array, left + 1, last); }