代码如下:
/**
* 快排算法的实现
*
* @author : Xiewy <br/>
* @date : 2022/3/2 22:13 <br/>
*/
public class QuickSort {
/**
* 测试
*/
public static void main(String[] args) {
int[] array = {5, 9, 1, 9, 5, 3, 7, 6, 1, 21, 4, 7, 0, -9};
QuickSort quickSort = new QuickSort();
quickSort.quickSort(array, 0, array.length - 1);
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
/**
* 升序快排
*
* @param array 待排序数组
* @param begin 排序开始的下标
* @param end 排序结束的下标
*/
private void quickSort(int[] array, int begin, int end) {
if (begin < end) {
//基准值
int key = array[begin];
int i = begin;
int j = end;
while (i < j) {
//array[j]大于基准值则j对象的下标往左边移一位
while (i < j && array[j] > key) {
j--;
}
//到这一步说明array[j]比key小,将array[i]赋值给array[j]
if (i < j) {
array[i] = array[j];
i++;
}
while (i < j && array[i] < key) {
i++;
}
if (i < j) {
array[j] = array[i];
}
}
array[i] = key;
//继续排左边
this.quickSort(array, begin, i - 1);
//继续排右边
this.quickSort(array, i + 1, end);
}
}
}