何为冒泡,举个栗子:观察气泡在水中的变化,气泡在底部时较小,当气泡慢慢浮出水面,气泡越来越大。冒泡排序又称交换排序。
冒泡排序的比较方式是从第一个元素开始,依次比较相邻的元素,如果发现前面的大于后面的,则交换顺序,第一轮交换完毕后,最后一个变成了最大的数,在按照前面的规则,直至完成正确的排序。时间复杂度最好O(n),最差是反序复杂度为O(n2)
package cn.sortAlgorithm;
public class BubbleSort extends Object{
public static void main(String[] args){
int[] data = {1,3,5,12,2,9,0};
System.out.println("排序前:");
display(data);
sort(data);
}
public static void sort(int[] arr){
int tmp;
for(int i=arr.length-1; i>0; i--){ //记录次数
int flag = 0;
for(int j=0; j<i; j++){
if(arr[j]>arr[j+1]){
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
flag++;
}
}
if(flag == 0){
break;
}
}
//显示数组
System.out.println();
System.out.println("排序后:");
display(arr);
}
public static void display(int[] arr){
for(int i=0; i<arr.length; i++){
System.out.print(arr[i]+" ");
}
}
}