0%

排序算法-冒泡排序

冒泡排序 如:从大到小排序,每次内循环将大数交换到前边,如同大数向上浮,故称为冒泡排序。

例如:从大到小排序:
从前向后判断相邻两个数的大小,*(a[j] < a[j+1])*将小的换到后边,每次内循环完毕会将一个最小的数换到最下方。
每次内循环可排好一个数,每次内循环次数递减1 j=a.length-i-1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class MaopaoRang {
public static void main(String[] args) {
int a [] = {3,16,18,5,35,6,18,2,15};
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length-i-1; j++) {
//比较相邻两个数的大小,不符合要求,则交换。
if(a[j] < a[j+1] ){
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;

//打印每次交换后的数组
for (int k = 0; k < a.length; k++) {
System.out.print(a[k]+" ");
}
System.out.print("*");
}
}
System.out.println();
}
//打印排序结果
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
}

}

每次交换后的数组

1
2
3
4
16 3 18 5 35 6 18 2 15 *16 18 3 5 35 6 18 2 15 *16 18 5 3 35 6 18 2 15 *16 18 5 35 3 6 18 2 15 *16 18 5 35 6 3 18 2 15 *16 18 5 35 6 18 3 2 15 *16 18 5 35 6 18 3 15 2 *
18 16 5 35 6 18 3 15 2 *18 16 35 5 6 18 3 15 2 *18 16 35 6 5 18 3 15 2 *18 16 35 6 18 5 3 15 2 *18 16 35 6 18 5 15 3 2 *
18 35 16 6 18 5 15 3 2 *18 35 16 18 6 5 15 3 2 *18 35 16 18 6 15 5 3 2 *
35 18 16 18 6 15 5 3 2 *35 18 18 16 6 15 5 3 2 *35 18 18 16 15 6 5 3 2 *