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);
}
c# 快速排序
最新推荐文章于 2024-05-16 10:08:02 发布