DESKTOP-QT2JO23_20200904-孙中霞

1、问题

今天是不好的一天也是好的一天,我早上整合笔记没来得及交日志,但是在今天晚上很神奇的,我又学会并弄懂了一个算法排序---快速排序,感觉学会东西的那一刻很开心!

package com.itlaobing;

public class QuickSort {

    public static void quickSort(int[] arr, int left, int right) {
        int i = left;//左哨兵
        int j = right;//右哨兵

        if (i > j) {
            return;
        }

        int temp = arr[left];
        while (i < j) {
            while (i < j && temp <= arr[j]) {//从右往左找比基准值小的
                j--;
            }
            temp = arr[j];
            while (i < j && temp >= arr[i]) {//从左往右找比基准值大的
                i++;
            }

            //在此位置左右哨兵进行位置交换
            arr[j] = arr[i];
            arr[i] = temp;
        }
        
        //重新定义基准值,重复以上排序方法
        quickSort(arr, left, i - 1);
        quickSort(arr, i + 1, right);
    }

    public static void main(String[] args) {

        int arr[] = { 1, 5, 2, 3, 7, 4, 5, 6 };
        quickSort(arr, 0, arr.length - 1);
        for (int i : arr) {
            System.out.println(i);
        }

    }

}

2、解决

先自己想,后来敲代码,后来顺着代码将数组元素再走一遍

3、吐槽

有些地方的方法太多,在做笔记的时候,写的话,太多,不写的话,以后返回到这一块的时候又不清楚