JAVA冒泡排序
冒泡排序逻辑循环必须要有两层循环
冒泡排序代码
冒泡排序逻辑
今天面试遇到了个冒泡排序算法,由于自己粗心了,循环过程中由于
循环变量书写错误导致排序出现了问题,出现的问题就是不能完整排序。
循环必须要有两层循环
== 下面梳理一下具体的循环层次逻辑== 第一层: 第一次表示将最大的(最小的)数字排序到最后; 第二次表示将第二大的(第二小的)数字排序到倒数第二的位置; 第三次表示将第三大的(第三小的)数字排序到倒数第三的位置; ………… ………… ………… 倒数第二次表示将倒数第二小(倒数第二大的)数字排序到第二个位置; 最后一次表示将最小的(最大的)数字排序到第一个位置。 第二层 第二层主要就是将相邻两个数字进行比较然后判断是否需要交换位置,也就是对数字进行处理。
冒泡排序代码
public void sort() {
int[] array = {6, 123, 234, 23, 567, 31, 21, 5, 1234}; //定义一个数组,可自定测试数组
for (int i = 0; i < array.length-1; i++) { //由于需要与自身下一个数字进行比较,所以i长度要小于数组长度减一
for (int j = 0; j < array.length-1-i; j++) { //随着循环的次数已将相应较小的数字已经按规则拍到最后,所以后面比较次数会越来越少。此处注意控制j的大小
if(array[j] < array[j+1]) { //判断是否小于后一位数,小于则进行位置交换;不小于不做处理
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
for (int i : array) {
System.out.print(i + " "); //对数组输出验证
}
System.out.println("");
}