冒泡排序
实现原理
循环遍历数组,进行两两比较,前者大于后者,则进行交换
时间复杂度:
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];
}
}
}
}
}