- 冒泡排序算法
冒泡排序算法是通过多次比较和交换来实现排序的,其流程如下:
(1)对数组中的各数据,依次比较相邻的两个元素的大小;
(2)如果前面的数据大于后面的数据,就交换这两个数据。经过第一轮的多次比较排序后,便可以将最小的元素排好;
(3)再用相同的方法剩下的数据逐个进行比较,最后便可以按照从小到大的顺序排好。
下面举一个实例来执行
对于整型数据118,101,105,127,112,这是一组无序数据。
执行步骤如下:
(1)第1次排序,从数组的尾部开始向前依次比较。首先是127和112比较,由于127大于112,因此将数据112向上移了一位;同理,118和101比较, 将数据101向前移了一 一位。此时排序后的数据为101、118、105、112、127
(2)第2次排序,从数组的尾部开始向前依次比较。105和118比较,可以将数据105向前移一位。此时排序后的数据为101、 105、118、 112、 127。
(3)第3次排序,从数组的尾部开始向前依次比较。由于112和118比较,可以将数据118向前移一位。此时排序后的数据为101、105、 112、118、127。
(4)第4次排序时,此时,各个数据已经按顺序排列好,所以无须再进行数据交换。此时,排序的结果为101、105、112、 118、127。
- 代码如下:
public static void main(String[] args) {
int[] a = {118,101,105,127,112};
bubbleSort(a);
System.out.println("最终排序结果:" + Arrays.toString(a));
}
private static void bubbleSort(int[] a) {
int n= 0;
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - 1 - i; j++) {
if (a[j] > a[j+1]) { //将相邻两个数进行比较,将较大的数往后冒泡
//交换相邻两个数的位置
swap(a,j,j + 1);
n++;
System.out.println("第"+n+"步排序结果:"+Arrays.toString(a));
}
}
}
}
private static void swap(int[] a, int j, int i) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
//运行结果:
第1步排序结果:[101, 118, 105, 127, 112]
第2步排序结果:[101, 105, 118, 127, 112]
第3步排序结果:[101, 105, 118, 112, 127]
第4步排序结果:[101, 105, 112, 118, 127]
最终排序结果:[101, 105, 112, 118, 127]