问题:设一组初始记录关键字序列为{65,56,72,99,86,25,34,66},则以第一个关键字65为基准而得到的一趟快速排序结果是。
思路:设置两个索引 L 和H,L初始指向最低位 65,H初始指向最高位66,从高位向低位进行比较,遇到比65小的就将它放到L处,然后L索引向前移动一位,遇到比65大的数就将它放到H索引位置,H索引向前移动一位。
/**
* @author XuRuiQing
* @date 2018/9/9 9:33
* 快速排序
*/
public class QuickSort {
public static void sort(int[] a, int low, int high) {
if (low >= high) {
return;
}
int i = low;
int j = high;
int key = a[i];
while (i < j) {
while (i < j && a[j] >= key) {
j--;
}
a[i++] = a[j];
while (i < j && a[i] <= key) {
i++;
}
a[j--] = a[i];
}
a[i] = key;
sort(a, low, i - 1);
sort(a, i + 1, high);
}
public static void quickSort(int[] a) {
sort(a, 0, a.length - 1);
for (int i : a) {
System.out.print(i + " ");
}
}
public static void main(String[] args) {
int[] a = {65,56,72,99,86,25,34,66};
quickSort(a);
}
}