从头部开始依次将数组相邻的两个数进行比较,若前面的数大于后面的数,则进行交换,每遍历完成一趟就将最大的数移到了最后,小数就像鱼儿吐泡泡一样自动的浮向前面,共遍历数组的长度-1次,则完成排序。
public int[] sort(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=0;j< arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
arr[j]=arr[j]^arr[j+1];
arr[j+1]=arr[j+1]^arr[j];
arr[j]=arr[j]^arr[j+1];
}
}
}
return arr;
}
稳定性:若数组中出现重复元素,若排序后重复元素还按照源数组中的先后顺序排列,则称之为稳定,否则为不稳定
in-place:不占用额外内存
n:数据规模
排序算法 | 平均时间复杂度 | 最好情况 | 最坏情况 | 空间复杂度 | 排序方式 | 稳定性 |
---|---|---|---|---|---|---|
冒泡排序 | O(n^2) | O(n ) | O(n^2) | O(1) | In-place | 稳定 |
原文:https://www.cnblogs.com/ekig/p/14726334.html