普通的排序算法需要每次都要遍历n的2次方代码如下,都必须有双从循环
public void function(int[] arr){
for(int i=0;i<arr.length;i++){
for(int j=i;j<arr.length;j++){
if(arr[i]>arr[j]){
int tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
}
}
}
优化之后的算法,添加了一个判断,如果这个数组是有序的,则只需要遍历一次,就可以执行完毕
public void function(int[] arr){
for(int i=0;i<arr.length;i++){
boolean flag=true;
for(int j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j]=tmp;
flag=false;
}
}
if(flag){
return;
}
}
}