先上代码:
import java.util.Scanner;
public class BubbleSort {
public static void main(String agre[]){
int temp = 0;
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int m = sc.nextInt();
int[] num = new int[m];
for(int i =0; i < m; i++){
num[i] = sc.nextInt();
}
// 冒泡算法
// 第一个循环
for(int i=0; i < num.length - 1; i++){
// 第二个循环
for(int j = 0; j < num.length - i -1; j++) {
if(num[j] > num[j+1]){
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
for(int n: num) {
System.out.print(n+" ");
}
}
}
}
冒泡算法,核心思想:前后比较,如果前面比后面大,则交换位置。
先讲第二个循环,第一个数与第二个数比较,以此循环到倒数第二个数与倒数最后一个数比较,每次循环中最大的数都会被移到最后一位,所以,每次循环的长度都减一以此提高速度。
在第二个循环中,如果前面比后面的大,则交换位置。看动画演示,增强理解
第一个循环的用处,由于只比较一次是不足以全部从小到大排序的,所以循环i次(数的个数),就可以全部排序到。