冒泡排序 冒泡排序

实现原理

循环遍历数组,进行两两比较,前者大于后者,则进行交换

时间复杂度:O(n^2)

空间复杂度:O(1)

两两交换的方式

设置中间变量进行存储临时元素的值

int x = 1;
int y = 2;
int temp = x;
x = y;
y = temp;
// 这样最终就实现了x和y的交换

使用异或运算符进行交换元素

// 假定数据 array[j]  array[j + 1]
// 使用异或运算符进行交换元素
array[j] ^= array[j + 1];

PHP中有list方法可以进行交换,别的语言我不太清除,上面的是通用的

// 这是PHP7的一个list方法
list($array[$j], $array[$j + 1]) = [$array[$j + 1], $array[$j]];

Python中的进行交换的方式

# python的就更简单了
x, y = y, x

实现

Java实现

public class Bubble {

    public static void main(String[] args) {
        int[] a = new int[]{1, 3, 4, 5, 6, 32, 54};
        bubble(a);
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + "	");
        }
    }

    public static void bubble(int[] array) {
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length - 1 - i; j++) {
                if (array[j] > array[j + 1]) {
                    // 这里使用了异或的方式
                    array[j] ^= array[j + 1];
                }
            }
        }
    }
}