3分钟学会冒泡排序

思路:

  1. 两个元素比较,大的放到右边
  2. 从头开始依次比较相邻的两个元素,目的是找出最大的一个元素放到末尾,这个元素不再参与比较
  3. 第二次仍然从头开始,把第二大的元素放到正确的位置
  4. 一共比较 len -1 趟,因为已经确定了 len -1 个元素的位置,那么第 n 个肯定是最小的那个了
  5. 第 i 趟的比较次数为 len - i -1,因为每次都会和下一个元素比较
  6. 当两个元素相等时不交换,是稳定的排序算法
  7. 优化:当某一趟没有进行任何交换时,说明已经是有序了

对 2,5,1,6,9,3 进行排序

算法实现:

/**
 * 冒泡排序
 */
public class Solution {
    public static void bubbleSort(int[] array) {
        boolean swap;    // 优化
        for (int i = 0; i < array.length; i++) {
            swap = false;
            // i 从第 0 次开始,没一趟都会少比较一个元素
            // -1 表示比较次数少于元素个数
            for (int j = 0; j < array.length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                    swap = true;
                }
            }
            if (swap = false) {
                break;
            }
        }
    }

    public static void main(String[] args) {
        int[] array = new int[]{2, 5, 1, 6, 9, 3};
        bubbleSort(array);
        for (int i : array) {
            System.out.print(i + " "); // 1 2 3 5 6 9 
        }
    }
}
发布了242 篇原创文章 · 获赞 16 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_29150765/article/details/105184752