先用第一个和后面的每一个比,再用第二个和他后面的每一个比
前冒法:
package com.haha.test2;
public class Test2 {
/**
* @param args
*/
public static void main(String[] args) {
int[] datas={2,3,7,4,9,1};
System.out.println("---------old---------");
print(datas);
System.out.println("---------old---------");
int n=datas.length;//6
for(int i=0;i<n-1;i++){
System.out.println("------------"+i+"------------");
for(int j=0;j<n-i-1;j++){
System.out.print(j+">>>>");
if(datas[j]>datas[j+1]){
//交换
int tmp=datas[j];
datas[j]=datas[j+1];
datas[j+1]=tmp;
}
print(datas);
System.out.println("------------------");
}
System.out.println("------------"+i+"------------");
}
}
static void print(int[] datas){
for(int d :datas){
System.out.print(d+" ");
}
System.out.println();
}
}
后冒法:
package com.haha.test2;
public class Test3 {
/**
* @param args
*/
public static void main(String[] args) {
int[] datas={2,3,7,4,9,1};
print(datas);
int n=datas.length;//6
/*
冒泡(后冒)
i=0;i<n-1;
j=0;j<n-1-i;
if(j>j+1)
*/
/*
冒泡(前冒)
i=0;i<n-1;
j=i+1;j<n;
if(i>j)
*/
for(int i=0;i<n-1;i++){
System.out.println("---------"+i+"-----------");
for(int j=i+1;j<n;j++){
if(datas[i]>datas[j]){
int tmp=datas[i];
datas[i]=datas[j];
datas[j]=tmp;
}
System.out.println(j+">>>>>>");
print(datas);
}
System.out.println("---------"+i+"-----------");
}
print(datas);
}
static void print(int[] datas){
for(int d :datas){
System.out.print(d+" ");
}
System.out.println();
}
}