冒泡排序(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趟排序后,最后的元素必定是最大值。
- 下一趟排序时,可以排除最后的元素。
- 重复步骤1-3,直到排序完成。
时间复杂度O(n2),空间复杂度O(1)。
所以,冒泡排序的关键是:
- 相邻元素比较交换,如果顺序错误。
- 每趟排序后,末尾元素必定最大值,可以排除。
- 重复比较交换与排除最大值,直到排序完成。
通过不断比较相邻元素与交换,在每趟排序中排除最大值,最终达到完全排序。