怎样实现冒泡排序算法

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果顺序错误就把它们交换过来。
我们可以实现冒泡排序算法如下:

public void bubbleSort(int[] nums) {
    for (int i = 0; i < nums.length; i++) {
        // 设置遍历的边界,每次排除一个最大值
        for (int j = 0; j < nums.length - i - 1; j++) { 
            if (nums[j] > nums[j + 1]) {
                swap(nums, j, j + 1);
            } 
        }
    }
}

private void swap(int[] nums, int i, int j) {
    int temp = nums[i];
    nums[i] = nums[j];
    nums[j] = temp;
}

算法流程:

  1. 比较相邻元素,如果顺序错误就交换。
  2. 第1趟排序后,最后的元素必定是最大值。
  3. 下一趟排序时,可以排除最后的元素。
  4. 重复步骤1-3,直到排序完成。

时间复杂度O(n2),空间复杂度O(1)。
所以,冒泡排序的关键是:

  1. 相邻元素比较交换,如果顺序错误。
  2. 每趟排序后,末尾元素必定最大值,可以排除。
  3. 重复比较交换与排除最大值,直到排序完成。
    通过不断比较相邻元素与交换,在每趟排序中排除最大值,最终达到完全排序。