1 外层遍历每个元素
内层 进行数组的两个交换
内层每循环一次 把依次最大的值放在最后
public static void maopao(int[]a){
int temp;
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i; j++) {
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
2 //最后几次可能已经排好序
public static void maopao(int[]a){
int temp;
boolean flag=true;
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i; j++) {
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=false;
}
}
if(flag){
break;
}
}
}
3
记录要交换的最后下标位置,减少循环次数
public static void maopao(int[]a){
for (int i = 0; i < a.length-1; i++) {
int sortBorder=a.length-1;
int lastExchangeIndex=0;
boolean flag=true;
int temp;
for (int j = 0; j < sortBorder; j++) {
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=false;
lastExchangeIndex=j;
}
}
sortBorder=lastExchangeIndex;
if(flag){
break;
}
}
}