排序法

选择排序

  • 每次选择最小的放到数组的最左右,第二次循环选择n+1里最小的放到第二个位置
  • 时间复杂度:O(n)2
 public static int[] selectSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return arr;
        }
        for (int i = 0; i < arr.length; i++) {
            int minIndex = i;
            for (int j = i + 1; j < arr.length; j++) {
                minIndex = arr[j] < arr[minIndex] ? j : minIndex;
            }
            replaceNum(arr, i, minIndex);
        }
        return arr;
    }

冒泡排序法

  • 每次循环判断相邻的数字如果数字够大,交换位置
  • 时间复杂度:O(n)2
public static int[] maopao(int[] arr) {
      if (arr == null || arr.length < 2) {
                  return arr;
              }
        for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i] > arr[j]) {
                    replaceNum(arr, i, j);
                }
            }
        }
        return arr;
    }

插入排序

 public static int[] insertSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return arr;
        }
        for (int i = 1; i < arr.length; i++) {
            for (int j = i - 1; j >= 0; j--) {
                if (arr[j+1] < arr[j]) {
                    replaceNum(arr, j+1, j);
                }
            }
        }
        return arr;
    }

未完待续