快排

package com.example.demo;

import java.util.Arrays;

public class QuickSort {

    public static void quickSort(int[] arr) {
        if (arr == null || arr.length == 0 || arr.length == 1) {
            return;
        }
        sort(arr, 0, arr.length - 1);
    }
    public static void sort(int[] arr, int left, int right) {
        if (left > right) {
            return;
        }

        int temp = arr[left];
        int i = left, j = right;
        while (i != j) {
            // 从右向左找一个比temp值大的值
            while (i < j && arr[j] >= temp) {
                j--;
            }

            while (i < j && arr[i] <= temp) {
                i++;
            }

            // 循环结束: 1.找到了指定的i 和 j;2.  i>=j
            if (i < j) {
                int temp2 = arr[i];
                arr[i] = arr[j];
                arr[j] = temp2;
            }
        }

        // 一趟查找结束,基准元素归位
        arr[left] = arr[i];
        arr[i] = temp;

        sort(arr, left, i - 1);
        sort(arr, i + 1, right);
    }


    public static void main(String[] args) {
        int[] arr = new int[] {1,3,6,2,10,0,11};
        quickSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

posted @ 2025-03-31 14:51  zoomingxu  阅读(14)  评论(0)    收藏  举报