public static void main(String[] args) { int[] a = {12, 20, 5, 16, 15, 15, 1, 30, 45, 23, 9}; int i = 0; int j = a.length - 1; kuaiPai(a, i, j); Arrays.stream(a).forEach(x -> System.out.print(x + " , ")); } static void kuaiPai(int[] a, int left, int right) { //设置游标 i , j int i = left; int j = right; //递归出口 if (left > right) { return; } //选取基准点 int key = a[i]; while (i < j) { while (i < j && key <= a[j]) {//从右到左遍历 如果没有小于基准点的 那么一直减j j--; } if (key > a[j]) {//如果找到了小于基准点的 那么将a[j]放到a[i]位置 a[i] = a[j]; } while (i < j && key >= a[i]) {//从左到右遍历 如果没有大于基准点的 那么一直加i i++; } if (key < a[i]) {//如果找到了大于基准点的 那么将a[i]放到a[j]位置 a[j] = a[i]; } } a[i] = key;//此时i与j 重合 那么将基准点放到该索引(i/j)的位置 kuaiPai(a, left, i - 1);//递归基准点左边的 kuaiPai(a, i + 1, right);//递归基准点右边的 }
java 快速排序
最新推荐文章于 2024-04-28 14:38:27 发布