冒泡排序简介
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成
源代码
public class BubbleSort {
public static void sort(int[] data){
assert data!=null?true:false;
int len = data.length;
for(int i=len-1;i>0; i--){
for(int j=0;j<i;j++){
if( data[j] > data[j+1] ){
int temp = data[j+1];
data[j+1] = data[j];
data[j] = temp;
}
}
System.out.println("i:"+i+"="+Arrays.toString(data));
}
}
public static void main(String[] args) {
int[] data = {9,1,5,3,7,4,2};
System.out.println("before:"+Arrays.toString(data));
sort(data);
System.out.println("after:"+Arrays.toString(data));
}
}
执行结果
before:[9, 1, 5, 3, 7, 4, 2]
i:6=[1, 5, 3, 7, 4, 2, 9]
i:5=[1, 3, 5, 4, 2, 7, 9]
i:4=[1, 3, 4, 2, 5, 7, 9]
i:3=[1, 3, 2, 4, 5, 7, 9]
i:2=[1, 2, 3, 4, 5, 7, 9]
i:1=[1, 2, 3, 4, 5, 7, 9]
after:[1, 2, 3, 4, 5, 7, 9]
分析
冒泡排序比较2个相邻的元素,如果2个元素相等其位置不会发生变化,因此是一种稳定
的排序算法,经过上面的演变可以看出当