思路:
先比较第一个和第二个元素 4比5小 不需要交换位置;
再比较第二个和第三个元素 5比6小 不需要交换位置;
再比较第三个和第四个元素 6比3大 需要交换位置;4 5 3 6 2 1
再比较第四个和第五个元素 6比2大 需要交换位置;4 5 3 2 6 1
再比较第五个和第六个元素 6比1大 需要交换位置;4 5 3 2 1 6
先比较第一个和第二个元素 4比5小 不需要交换位置;
再比较第二个和第三个元素 5比3小 不需要交换位置;4 3 5 2 1 6
再比较第三个和第四个元素 5比2大 需要交换位置;4 3 2 5 1 6
再比较第四个和第五个元素 5比1大 需要交换位置;4 3 2 1 5 6
再比较第五个和第六个元素 1比6小 不需要交换位置;4 5 3 2 1 6
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
第一种写法
时间复杂度分析
public class MaoPao {
public static void sort(Comparable[] a){
for (int i = a.length - 1;i>0;i--){ //一共要冒泡几次 最大索引
for (int j = 0;j<i;j++){
if (greater(a[j],a[j+1])){
exchange(a,j,j+1);
}
}
}
}
//比较a元素是否大于b元素
public static boolean greater(Comparable a,Comparable b){
return a.compareTo(b)>0;
}
//交换a索引i和j处的值
public static void exchange(Comparable[] a,int i,int j){
Comparable temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
第二种写法
import java.util.Arrays;
public class MaoPao2 {
public static void main(String[] args) {
int[] a = new int[]{6,5,4,3,2,1};
sort(a);
System.out.println(Arrays.toString(a));
}
public static void sort(int[] a){
for (int i = a.length-1;i>0;i--){
for (int j = 0;j<i;j++){
if (a[j]>a[j+1]){
int temp = 0;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
}