算法描述
比较相邻的元素,如果第一个比第二个大,就交换它们两个,从第一个比到倒数第二个。重复上述步骤,除了最后一个。
代码实现
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {64, 0, 2, 6, 64, 31, 98, 49, 46, 26, 5, 56, 198, 5, 4, 465};
bubble(arr);
System.out.println(Arrays.toString(arr));
}
private static void bubble(int[] arr) {
if (arr == null || arr.length <= 1) return;
// 外层循环控制总共的比较次数
for (int i = 0; i < arr.length; i++) {
// 内层循环控制每一次的比较次数
for (int j = 0; j < arr.length - i - 1; j++) {
int temp = arr[j + 1];
if (arr[j] > arr[j + 1]) {
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
}
[0, 2, 4, 5, 5, 6, 26, 31, 46, 49, 56, 64, 64, 98, 198, 465]
算法分析
时间复杂度:
最佳情况:T(n) = O(n)
平均情况:T(n) = O(n^2)
注:写错了欢迎指证!