#关键词#
java,基础,冒泡排序,代码
如果我们想要将数组里的 n 个数按照从小到大的顺序进行冒泡排列,冒泡排序步骤如下:
1.从头开始,将第 1 个和第 2 个数进行比较,如果前面的数比后面的大,交换位置;
2.向后移动,开始比较第二个,第三个,规则同上一步;
3.移动比较,直到比较了第 n 个和第 n-1 个,第一轮完成;
4.重复从第一步到第三步,完成n-1轮就可以了。不同的是,每次移动次数会减少,比如说第二轮只需要比较到第 n-1 个和第 n-2 个,因为第 n 个和第 n-1 个在前一轮比较过了,第 n 个就是目前最大的数了。
按照上面的步骤,我们就可以完成冒泡排序了,不过还可以简化:如果在一轮中,没有发生交换,那意味着大家就是按照从小到大的顺序排的,那么就可以停止程序了。
import java.util.Arrays;
public class Main{
public static void main(String[] args){
int [] sort_arr=new int []{13,15,17,18,2,1,5,3,54,5,6,14,18};
int [] new_arr=maopao_test(sort_arr);
System.out.println(Arrays.toString(new_arr));
}
public static int[] maopao_test(int [] a){
int [] inner_arr=Arrays.copyOf(a,a.length);
for (int i = 0; i < inner_arr.length-2; i++) {
Boolean flag_break=true;
for (int j = 0; j < inner_arr.length-1-i; j++) {
if (inner_arr[j]>inner_arr[j+1]){
int tem_i=inner_arr[j];
inner_arr[j]=inner_arr[j+1];
inner_arr[j+1]=tem_i;
flag_break=false;//如果没有发生交换,那么flag_break就是true
}
}
if(flag_break){return inner_arr;}
}
return inner_arr;
}
}
运行如下:
[1, 2, 3, 5, 5, 6, 13, 14, 15, 17, 18, 18, 54]
进程已结束,退出代码为 0