快速排序递归实现:
//快速排序
public static void quickSortTest(int[] array, int head, int tail) {
//练习
int i = head;
int j = tail;
int temp; //交换用的中间值
int standard = head;
//递归终止条件
if (i > j) {
return;
}
//i>j,即头游标超出尾游标就退出循环
while (i < j) {
//先开始从尾部往前走,直到碰到一个比基准值小的数才停止 i<j 条件出现的原因是防止在遇到i之前一直没有找到比基准值小的值
while (array[j] >= array[standard] && i < j) {
j--;
}
//再从头部往后走,直到碰到一个比基准值大的数才停止
while (array[i] <= array[standard] && j > i) {
i++;
}
//头游标没有超过尾游标则交换数值
if (i < j) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
//相遇之后把基准值与相遇位置的值交换
temp = array[standard];
array[standard] = array[i];
array[i] = temp;
//迭代调用重复操作
//左边部分
quickSort(array, head, i - 1);
//右边部分
head = i;
quickSort(array, i + 1, tail);
}