第一种
public class BubbleSort {
public static void main(String[] args) {
//冒泡排序 从大到小
int [] arr = {1,32,141,23,141,23342,232,43,2};
int n = arr.length;
int t = -1;
for(int i=0;i<n;i++)
for(int j=0;j<n-1;j++){//也可以从后往前循环
if(arr[j]<arr[j+1]){ //从小到大改成 >
t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
}
}
for(int i=0;i<n;i++)
System.out.print(arr[i]+" ");
}
}
输出结果 :23342 232 141 141 43 32 23 2 1
第二种 优化版 避免无谓的比较 因为每次第二个for循环结束后,都会产生一个排列好的次序.如第一次完成后,最小的已经在最后了,第二次后,在倒数第二…
public static void main(String[] args) {
//冒泡排序 从大到小
int [] arr = {1,32,141,23,141,23342,232,43,2};
int n = arr.length;
int t = -1;
boolean flag = false;
for(int i=0;i<n;i++)
for(int j=0;j<n-1-i;j++){
// -i,因为每次比较完后都会确定一个次序
if(arr[j]<arr[j+1]){
t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
}
}
for(int i=0;i<n;i++)
System.out.print(arr[i]+" ");
}
在课本上的标准BubbleSort
public static void main(String[] args) {
//冒泡排序 从大到小
int [] arr = {1,32,141,23,141,23342,232,43,2};
int n = arr.length;
int t = -1;
for(int i=1;i<n;i++)
for(int j=n-1;j>=i;j--){
if(arr[j]>arr[j-1]){ //直接写 3行
t = arr[j];
arr[j] = arr[j-1];
arr[j-1] = t;
}
}
for(int i=0;i<n;i++)
System.out.print(arr[i]+" ");
}
才疏学浅,抛砖引玉.