一. 算法描述
1.比较相邻的元素。如果第一个比第二个大,就交换它们两个;
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
3.针对所有的元素重复以上的步骤,除了最后一个;
重复步骤1~3,直到排序完成。
二.代码实现
private static void bubbleSort(int[] nums) {
if (nums == null || nums.length <= 1) {
return;
}
for (int i = 0; i < nums.length; i++) {
for (int j = 1; j < nums.length - i; j++) {
if (nums[j - 1] > nums[j]) {
swap(j - 1, j, nums);
}
}
}
}
private static void swap(int j1, int j2, int[] nums) {
int temp = nums[j1];
nums[j1] = nums[j2];
nums[j2] = temp;
}
三.复杂度分析
时间复杂度: 平均 O(n²) ,最坏 O(n²) ,最好O(n)
空间复杂度:O(1)
稳定性: 稳定