特点:实现简单,无额外空间消耗,速度较慢,适合数据较少的场景,复杂度为O(N^2)
思路:每一轮比较都从头开始,然后两两比较,如果左值比右值大,则交换位置,每一轮结束后,当前轮”最后一个元素”必将是最
大的.
场景:算法稳定,数据量较小的场景。时间复杂度O(n^2)
过程分析:
原始数组:[4,3,10,6,2]
过程:每一次遍历,都会将“无序区”中最大的元素交换到数组的末尾
------------>
-->3,4,10,6,2
-->3,4,10,6,2
-->3,4,6,10,2
-->3,4,6,2,[10]
------------>
-->3,4,6,2,[10]
-->3,4,6,2,[10]
-->3,4,2,[6,10]
------------>
-->3,4,2,[6,10]
-->3,2,[4,6,10]
------------>
-->2,[3,4,6,10]
---->
结束:[2,3,4,6,10]
java实现代码
public class BubbleSort {
public static void sort(int[] sources) {
int tmp;
int size = sources.length;
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (sources[j] > sources[j + 1]) {
tmp = sources[j];
sources[j] = sources[j + 1];
sources[j + 1] = tmp;
}
}
}
}
}