代码实现
/*
* 标题:冒泡排序
* 作者:Nstar
* 时间:2020年3月26日
* */
import java.util.Arrays;
//导包,因为需要用到Arrays类里面的toString方法,不导包就会报错
public class Test27 {
public static void main(String[] args) { //入口方法
int[] values = new int[]{1, 3, 6, 8, 2, 12, 34, 11,10,-1};
//定义要用到冒泡排序算法的数组,并且初始化
int num = 0; //定义中间变量,方便元素交换位置
for (int b = 0; b < values.length; b++){
//外层循环条件,values.length量出的值不能减一,因为,数组中的每个元素都要参与运算
//如果量得的值减一,就会漏掉一个元素,这样会导致不准确
for (int a = 0;a<values.length-1;a++){
//定义内部循环,values.length-1这个数组长度必须减一
//如果不减一,就会造成数组越界,因为要将每次循环得到的值作为数组下标来访问数组的元素值
if (values[a]>values[a+1]){
//第一次内部循环是1和3比较,因为1不大于3,所以不交换位置
//第二次内部循环是2和6比较,因为2不大于6,所以不交换位置
//第三次内部循环是6和8比较,因为6不大于8,所以不交换位置
//第四次内部循环是8和2比较,因为8大于2,需要把右边的2和左边的8交换位置
//下面方法依次类推,满足if条件就替换位置,不满足就不替换,这样永远使得小的数在左边,大的值在右边
num = values[a];
//首先将第四次循环的8赋值给num变量,也称为数据备份
values[a]=values[a+1];
//当 num = values[a];将第四次循环的值备份后,用2直接将8覆盖
values[a+1] = num;
//此时假设,2原来位置上的值为空,然后我们又将元素值8赋值给了原来2的位置,就完成了元素位置互换操作
}
System.out.println(Arrays.toString(values));
//Arrays.toString(values) 将整个数组用toString方法转换为字符串形式输出
}
System.out.println("---------------------------------");
//外部循环每循环一次就打印横杠,一共外层循环了多少次我们也看得清楚
//总循环次数=数组长度 X 数组长度-1
//通过自创公式得出总循环次数为90次
}
System.out.println("冒泡排序结果:"+Arrays.toString(values));
//最后将完成排序的数组进行输出
}
}
执行结果