冒泡排序和选择排序

  • 归属:蛮力法

  • 算法复杂度:O(n^2)

  • 稳定性:

    • 冒泡排序:稳定
    • 选择排序:不稳定
  • 思想:

    冒泡排序:遍历数组,当前下标的数大于后一个下标的数,则将两个下标的数交换,实现每一次遍历数组都移动一个最大元素到数组尾部(尾部排好序了则不再参加排序)。
    选择排序:遍历数组,每次遍历记录最小的元素,第一次跟index=0交换,第二次跟index=1交换,以此类推,实现排序。

  • 代码:


    /**
     * 冒泡排序
     */
    public static void bubbleSort(int[] nums) {
        for(int i = 0; i < nums.length - 1; i++) {
            //数组尾部已经排好序
            for (int j = 0; j < nums.length - 1 - i; j++) {
                if (nums[j + 1] < nums[j]) {
                    int aNum = nums[j];
                    nums[j] = nums[j + 1];
                    nums[j + 1] = aNum;
                }
            }
        }
    }

    /**
     * 选择排序
     */
    public static void selectionSort(int[] nums) {
        for(int i = 0; i < nums.length - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < nums.length; j++) {
                if (nums[j] < nums[minIndex]) minIndex = j;
            }
            if (minIndex != i) {
                int aNum = nums[minIndex];
                nums[minIndex] = nums[i];
                nums[i] = aNum;
            }
        }
    }

你可能感兴趣的:(冒泡排序和选择排序)