快速排序java实现 时间复杂度 和空间复杂度

时间复杂度O(nlogn)空间复杂度O(logn)最差会变成冒泡排序O(n) 不稳定算法

public class QuickSort {
    public static void main(String[] args) {
        int[] arr = {-9, -78, 0, 23, -567, 70};
        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){
           retutn;
       }
       //设置左右指针 把第一个数设置为基值
       int pivot=arr[left];
       int L=left;
       int R=right;
       
       while(L<R){
          //右边指针开始 计算是否符合 
          while(pivot<=arr[R]&&L<R){
           R--;
          }
          while(pivot>=arr[L]&&L<R){
           L--;
          }
          //不符合交换
          int temp = arr[L];
          arr[L]=arr[R];
          arr[R]=temp;
       }
       arr[left]=arr[L]; //基值和第一个值交换
       arr[L]=pivot;
       quickSort(arr,left,R-1); //左递归
       quickSort(arr,R+1,right); // 右递归
    }
}

你可能感兴趣的:(排序算法)