先上无优化代码
package cn.tianzheng.array2;
import java.util.Arrays;
/**
* 测试冒泡排序
*/
public class TestBubbleSort {
public static void main(String[] args){
int[] values = {3,1,6,2,9,0,7,4,5,8};
int temp = 0;
for (int i = 1; i < values.length; i++){
for (int j = 0; j < values.length - i; j++){
if(values[j] > values[j+1]){
temp = values[j];
values[j] = values[j+1];
values[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(values));
/*
for (int i = 0; i < values.length; i++){
System.out.println(values[i]);
}
*/
}
}
这个代码在第5次循环时就已经将数组排好序,后面四次会浪费资源。
因此,在大循环中加入flag,判断在if语句中是否存在交换,若不存在交换则break。
package cn.tianzheng.array2;
import java.util.Arrays;
/**
* 测试冒泡排序
*/
public class TestBubbleSort {
public static void main(String[] args){
int[] values = {3,1,6,2,9,0,7,4,5,8};
int temp = 0;
for (int i = 1; i < values.length; i++){
boolean flag = true;
for (int j = 0; j < values.length - i; j++){
if(values[j] > values[j+1]){
temp = values[j];
values[j] = values[j+1];
values[j+1] = temp;
flag = false;
}
}
if(flag){
break;
}
}
System.out.println(Arrays.toString(values));
/*
for (int i = 0; i < values.length; i++){
System.out.println(values[i]);
}
*/
}
}