冒泡排序
冒泡排序
原理
- 比较相邻元素,大就交换
- 从第一对开始,到最后一对,一次排序后保证最大的位于末尾
- 重复n次(n为)
复杂度
- 时间复杂度:O(n^2)
- 空间复杂度:O(1)
- 稳定排序
- 原地排序
使用环境
数组基本有序,或者一个有序的大数组中添加一些小数据。
代码实现
public void bubble(int[] arr) {
for(int i = 0;i < arr.length - 1;i++){
for(int j = 0;j < arr.length - i - 1;j++){
if(arr[j + 1] < arr[j]){
arr[j] = arr[j] ^ arr[j + 1];
arr[j + 1] = arr[j] ^ arr[j + 1];
arr[j] = arr[j] ^ arr[j + 1];
}
}
}
}
改良想法
在我们遍历的过程中,会发现从开始第一队到最后一对都没有发生交换,此时意味着,剩下这些待排序的元素已经是有序的数据,无序再次排序,所以我们可以引入一个标志,当遇到此情况的时候,直接跳出循环。减少无意义的比较和缩短排序时间。

浙公网安备 33010602011771号