优化:因为排序过程中,各元素不断接近自己的位置如果一趟比较下来没有进行交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。
代码实现
int[] arr ={3,9,-1,10,20};
int t=0; //中间变量
boolean flag=false;
//标志当前循环是不是一次也没进行交换,没有表示已经为有序数组 终止循环
//从小到大排序
for (int i = 0; i <arr.length-1 ; i++) {
for (int j = i+1; j <arr.length ; j++) {
if(arr[i]>arr[j]){
flag=true;
t=arr[j];
arr[j]=arr[i];
arr[i]=t;
}
}
if (!flag){
break;
}else{
flag=false;
}
System.out.printf("第%d趟排序后的结果为:",i+1);
for (int value : arr) {
System.out.printf("%d ", value);
}
System.out.println();
}