快速排序
- 选定Pivot中心轴
- 将大于Pivot的数字放到Pivot的右边
- 将小于Pivot的数字放到Pivot的左边
- 分别对左右子序列重复前面三个步骤
第一步:准备数据
第二步:选定中心轴Pivot
第三步:右侧下标R往左移动,直到数值比基准值Pivot小停止,将对应数值放到左侧下标L处。
第四步:左侧下标L往右移动,直到数值比基准值Pivot大停止,将对应数值放到右侧下标R处。
第五步:左侧下标L与右侧下标R重合后,将基准值Pivot放到重合下标处。
第六步:分成左右两个子序列后,重复以上步骤。
代码实现:
public class QuickSort {
public static void main(String[] args) {
int[] arry = {19, 97, 9, 17, 1, 8};
sort(arry, 0, arry.length - 1);
System.out.println(Arrays.toString(arry));
}
public static void sort(int arry[], int L, int R) {
if (L >= R) {
return;
}
int left = L;
int right = R;
int pivot = arry[left];
while (left < right) {
while (left < right && arry[right] > pivot) {
right--;
}
if (left < right) {
arry[left] = arry[right];
}
while (left < right && arry[left] < pivot) {
left++;
}
if (left < right) {
arry[right] = arry[left];
}
if (left >= right) {
arry[left] = pivot;
}
}
sort(arry, L, right - 1);
sort(arry, right + 1, R);
}
}