标签:文章 tostring 完成 more length tps tail net 排序数组
参考和引用了 白话经典算法系列之六——快速排序 的一些内容
挖坑填数过程详见文首所引用的那片文章
public class QuickSortDemo {
public static void main(String[] args) {
int[] arr = {5, 9, 78, 0, 23, -567, 70, 42, -5, 36};
quickSort(arr, 0, arr.length-1);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr, int left, int right) {
// 分治
if(left < right) {
int x = partition(arr, left, right);
quickSort(arr, left, x-1);
quickSort(arr, x+1, right);
}
}
/**
* 递归调用切分方法完成子数组排序
* @param arr 待排序数组
* @param left 数组首元素索引
* @param right 数组尾元素索引
* @return 切分元素的最终存放位置
*/
public static int partition(int[] arr, int left, int right) {
int i = left;
int j = right;
int pivot = arr[i];
while(i < j) {
// 1. 从右向左找 小于 pivot的数来填arr[i]的坑
while(i < j && arr[j] >= pivot)
j--;
if(i < j) {
arr[i] = arr[j];
i++;
}
// 2. 从左向右找 大于|等于 pivot的数来填arr[j]的坑
while(i < j && arr[i] < pivot)
i++;
if(i < j) {
arr[j] = arr[i];
j--;
}
}
// 退出时, i和j相遇; 该位置也是pivot在数组中的最终位置
arr[i] = pivot;
return i;
}
}
标签:文章 tostring 完成 more length tps tail net 排序数组
原文地址:https://www.cnblogs.com/liujiaqi1101/p/12327610.html