在学习数据结构与算法时,我们肯定遇到过各种各样的排序。
而最绕不开的就是快速排序了,它至今依然是很多排序场景下的最佳实践!
虽然很多时候不再需要我们手写,但它仍然需要我们掌握。
今天给大家带来快速排序的经典实现,代码如下:
/**
* @description 快速排序
* 开始位置,结束位置,以第一个数作为标准,比标准大的放到左边,比标准大的放到右边,然后递归标准数位置左右两边的数组就 OK 了
*/
public class QuickSort {
public static void main(String[] args) {
int[] arr = new int[]{3, 4, 6, 7, 4, 1, 2, 9, 0, 5, 7};
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr, int start, int end) {
if (start < end) {
// 把第0个做为标准
int stard = arr[start];
// 记录需要排序的下标
int low = start;
int high = end;
// 循环找比标准数大的数
while (low < high) {
// 右边比标准大
while (low < high && stard <= arr[high]) {
high--;
}
// 使用右边数字替换左边数字
arr[low] = arr[high];
// 如果左边数字比标准数字小
while (low < high && arr[low] <= stard) {
low++;
}
arr[high] = arr[low];
}
// 把标准数赋给低所在的位置的元素
arr[low] = stard;
// 处理所有的比标准数小的数字
quickSort(arr, start, low - 1);
// 处理所有的比标准数大的数字
quickSort(arr, low + 1, end);
}
}
}
完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!
在线访问:https://www.codecopy.cn/post/4n6sb5