public void QuickSort(int[] arr, int left, int right) //快速排序
{
//先從數列中去處一個數作為基准數
//分區過程,將比這個數大的數全放在他的右邊,小於或者等於放在左邊
//在對左右區間重復第二部
if (left < right)
{
int x = arr[left]; //基准數,把比她小或者等於他的放在他的左邊,然后把比他大的放在右邊
int i = left;
int j = right; //用來循環 的標志位
while (i < j)
{
while (i < j)
{
if (arr[j] <= x)
{
arr[i] = arr[j];
break;
}
else
{
j--; //向左移動到下一個數字
}
}
//從前往后(從左向右)找到一個比x大的數字
while ( i < j)
{
if (arr[i] > x)
{
arr[j] = arr[i];
break;
}
else
{
i++;
}
}
}
arr[i] = x;
QuickSort(arr, left, i - 1); //使用回調
QuickSort(arr, i + 1, right);
}
}
