冒泡排序算法
冒泡排序算法的平均时间复杂度为O(n²),最坏情况下的时间复杂度为O(n²),最好情况下的时间复杂度为O(n),空间复杂度为O(1),从第一个数据开始依次选取数值与相邻的数据值进行比较。
- 算法描述(升序为例)
选取第一个元素a与相邻元素b进行比较,如果a>b则交换值,小于不交换,继续与下一相邻元素进行比较,直到最后一个元素,由此可以进行第一轮比较会产生一个最大值并且交换到数据序列的末尾,第二轮则会选取除最大值之外所有数据中最大值交换到数据序列的倒数第二位,以此类推。每次都有一个值确定位置。 - 图片展示
- 代码展示(java)
/*
*冒泡排序
*/
public static int[] bubbleSort(int[] arr){
if(arr.length == 0){
return arr;
}
for(int i = 0; i <arr.length;i++){
//循环长度为arr.length-1-i,减 i 是为了提高性能,因为每一轮都会确定一个值得位置,不用再和位置已经确定的元素进行比较了,只对其余数据进行排序即可
for(int j = 0;j <arr.length-1-i;j++){
if(arr[j+1]<arr[j]){
int temp = arr[j+1];
arr[j+i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}