冒泡排序
冒泡排序原理示意图
步骤:
以从小到大排序为例遍历原始数据
外层循环,控制比较的趟数,从第一个数开始,到倒数第二个数结束,(i=0,i<array.length-1),一共array.length-1 趟。
内层循环,控制比较的次数,每一趟中需要比较这个数 array[j] 和下一个数 array[j+1] 的大小,
如果这个数比下一个数大(array[j]>array[j+1]) , 则交换这两个数。这样便可以将数据中最大的数转移到数组的最后。
内层循环次数只用比较到 array.length-i-1 ,即每次最后一个数不需要参与比较,因为每一趟都把最大的数排到最后了,排序几趟就少排序几次。
由于这个循环过程就像泡泡上浮的过程,所以被称为冒泡排序法。
理解了原理,之后只需要记住 外层循环 length-1 内层循环 length-i-1
代码如下:
import java.util.Arrays;
public class Test2 {
public static void main(String[] args) {
int[] array = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
//1. 冒泡排序
System.out.println("排序前:"+ Arrays.toString(array));
bubbleSort(array);
System.out.println("排序后:"+ Arrays.toString(array));
}
//1.冒泡排序
public static void bubbleSort(int[] array){
//趟数
for (int i = 0; i < array.length-1; i++) {
//次数
for (int j = 0; j < array.length-i-1; j++) {
if(array[j] > array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
}
运行结果如图: