冒泡排序算是一种简单直观的排序算法。
时间复杂度为O(n*n)
空间复杂度为O(1)
1. 算法的基本过程
比较相邻的两个元素,如果第一个比第二个大,就交换两个的顺序。
一遍排序后最后一个元素会是最大的数。
然后对于剩下的元素重复上面的步骤(除过最后一个最大的元素),直到最后没有任何一对数字需要比较。
2. 动图演示
注:以上动图摘自菜鸟教程
3. JAVA代码实现
package com.devin.algorithms;
public class BubbleSortDemo {
public static void main(String[] args) {
int[] data = new int[] { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 };
System.out.println(">>>>>>>>before doing bubble sort>>>>>>>>>");
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + ",");
}
System.out.println();
// Do Bubble Sort
for (int i = 1; i < data.length; i++) {
for (int j = 0; j < data.length - i; j++) {
if (data[j] > data[j + 1]) {
int temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
System.out.println(">>>>>>>>after doing bubble sort>>>>>>>>>");
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + ",");
}
}
}
运行结果如下:
>>>>>>>>before doing bubble sort>>>>>>>>>
3,44,38,5,47,15,36,26,27,2,46,4,19,50,48,
>>>>>>>>after doing bubble sort>>>>>>>>>
2,3,4,5,15,19,26,27,36,38,44,46,47,48,50,