冒泡排序只会操作相邻的数据,每次冒泡都会对相邻的两个数据做比较,看是否满足大小关系,若不满足,则交换
冒泡排序,每一次冒泡,会移动一个元素到它应该在的位置。整个排序完成需要n次冒泡才能完成
一次冒泡的过程如下:
如下图所示,第一次冒泡。将最后一个元素位置放上了最大的元素。完成一次冒泡

JAVA对冒泡排序的实现
public class BubbleSort {@Testpublic void bubbleSortTest(){int[] arrays = {1,8,4,3,7,9,2};bubbleSort(arrays);for(int i : arrays) {System.out.print(i+",");}}/*** 冒泡排序* @param arrays 需要排序的整形数组*/public void bubbleSort(int[] arrays){int length = arrays.length;//循环每一次冒泡for(int i = 0 ; i < length ; i++){//是否冒泡结束的标志boolean flag = false;//只循环没有冒泡的元素就可以,所有length-ifor(int j = 0 ; j < length - i -1 ; j++){//满足大小关系,则交换位置if(arrays[j] > arrays[j+1]){int temp = arrays[j+1];arrays[j+1] = arrays[j];arrays[j] = temp;flag = true;}}if(!flag){break;}}}}
执行结果:
1,2,3,4,7,8,9
算法性能分析
稳定性:由于当两个元素的不满足大小关系时,不交换位置,所以当两个元素值相同时,冒泡排序不会改变原有的顺序,即保证了稳定性。
时间复杂度:O(n*n)
空间复杂度:O(1)
