要点
- 时间复杂度——平均情况O(n2);最好情况O(n);最坏情况O(n2)
- 辅助空间O(1)
- 冒泡排序是一种稳定的排序方式
- 基本思路:交换排序,两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录位置
代码示例
public void bubbleSort0(int[] nums) {
for (int i = 0; i < nums.length; i++)
for (int j = i + 1; j < nums.length; j++)
if (nums[i] > nums[j])
swap(nums, i, j);
}
public void bubbleSort1(int[] nums) {
for (int i = 0; i < nums.length; i++)
for (int j = nums.length - 1; j > i; j--)
if (nums[j] < nums[j - 1])
swap(nums, i, j);
}
public void bubbleSort2(int[] nums) {
boolean flag = true;
for (int i = 0; flag && i < nums.length; i++) {
flag = false;
for (int j = nums.length - 1; j > i; j--) {
if (nums[j] < nums[j - 1]) {
swap(nums, i, j);
flag = true;
}
}
}
}
public void swap(int[] nums, int a, int b) {
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
}