两层for循环,外层判断循环多少次,内层循环比较判断两个数大小;
时间复杂度为O();
public static int[] sort(int[] arrays){
int temp;
//外层循环判断次数
for(int i = 0;i<arrays.length-1;i++){
//内层循环判断两个值大小
for(int j = 0;j<arrays.length-1-i;j++){
if(arrays[j]<arrays[j+1]){//降序
temp=arrays[j];
arrays[j]=arrays[j+1];
arrays[j+1]=temp;
}
System.out.println(Attays.tostring(arrays));
}
System.out.println(Attays.tostring(arrays));
}
return arrays;
}
可加标志位优化!
代码如下:
public static int[] sort(int[] arrays){
int temp;
//外层循环判断次数
for(int i = 0;i<arrays.length-1;i++){
boolean flag=false;//通过标志位减少没有意义的比较
//内层循环判断两个值大小
for(int j = 0;j<arrays.length-1-i;j++){
if(arrays[j]<arrays[j+1]){//降序
temp=arrays[j];
arrays[j]=arrays[j+1];
arrays[j+1]=temp;
flag=true;
}
System.out.println(Attays.tostring(arrays));
}
if(flag==flase){
break;
}
System.out.println(Attays.tostring(arrays));
}
return arrays;
}