冒泡排序
冒泡排序逻辑
重复地遍历待排序的元素,每次比较相邻的两个元素,并交换它们的位置,直到整个序列按照从小到大的顺序排列
因为不会交换相等值,所以冒泡排序是稳定排序
复杂度分析
平均时间复杂度:O(n^2)
空间复杂度:O(1)
最差情况的时间复杂度,待排序数组是倒序排列的,需要进行n-1次比较和交换操作,因此最坏情况下的时间复杂度为O(n^2)
代码实现
class Main {
public static void bubbleSort(int[] arr) {
int len = arr.length;
// i用于记录已经放好的最大值数组
for(int i = 0; i < len-1; i++) {
// 用于向后冒泡,依次交换大值
for(int j = 0; j < len - i - 1; j++) {
if(arr[j] > arr[j+1]){
swap(arr, j, j+1);
}
}
}
return;
}
public static void swap(int[] arr, int n, int m) {
int temp = arr[n];
arr[n] = arr[m];
arr[m] = temp;
}
}
使用场景
由于冒泡排序的效率较低,适用于待排序数组规模较小的情况。在实际应用中,冒泡排序更常用作算法学习和理解的示例。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 IT蛋的个人博客!