交换排序

以交换位置的方式排序

冒泡排序

原理:把最大的换到最后一位,然后把第一大的换到倒数第二位


   public static void bubbleSort(int[] args) {
        int len = args.length;
        while (len > 0) {
            for (int i = 0; i < len - 1; i++) {
                int next = i + 1;
                if (args[i] > args[next]) {
                    int temp = args[next];
                    args[next] = args[i];
                    args[i] = temp;
                }
            }
            len--;
        }
    }

快速排序

原理:从数列中取出一个值,将比这个值大的放在它的右边,将比这个值小的放在它的左边,再最左右两个区域重复这个过程,直到各个区域只有一个数。

 public void quickSort(int[] target, int left, int right) {
        if (left >= right) {
            return;
        }
        int pivot = target[left];// 基准点
        int lo = left;
        int hi = right;
        while (lo < hi) {
 
            while (target[hi] >= pivot && lo < hi) {
                hi--;
            }
            //把右边受阴元素和左边换
            target[lo] = target[hi];
 
            while (target[lo] <= pivot && lo < hi) {
                lo++;
            }
            //把左边受阴元素和右边换
            target[hi] = target[lo];
        }
        //把拿出来的元素放回去
        target[lo] = pivot;
        
        quickSort(target, left, lo - 1);
        quickSort(target, lo + 1, right);