冒泡排序
冒泡排序(BubbleSort)因为排序过程类似水中的泡泡慢慢上浮的过程,故命名为冒泡排序。冒泡排序是所有排序中最简单的排序算法之一,同时也是要求我们必须掌握的排序算法之一。
时间复杂度
冒泡排序的时间复杂度为(n2)。
冒泡排序过程
相邻的两个数值比较大小,满足交换条件即互换位置。直到所有的数字都不需要再进行交换,此时数列已经排序完成。
算法步骤:
1.比较俩个相邻的元素,若第一个比第二个大,就交换二者。
2.从第一对元素一直对比到最后一对元素,每一轮的比较下来,都会确定下来最后一个位置上的元素为当前比较数列的最大值。
3.重复上述步骤,直至最后一个元素。
4.所有的元素排序完成。
冒泡排序图解
代码实现
package pra;
import java.util.Arrays;
/**
* @author: Mercury
* Date: 2022/3/12
* Time: 10:17
* Description:冒泡排序
* Version:1.0
*/
public class BubbleSort {
public static void main(String[] args) {
int[] arrays = new int[]{1,2,3,1,3,6,2,7,5,3};
System.out.println("未排序前的数组顺序:"+Arrays.toString(arrays));
bubbleSort(arrays);
System.out.println("采用冒泡排序后的数组顺序:"+Arrays.toString(arrays));
}
public static void bubbleSort(int[] arrays){
//外层循环控制的是需要排序的轮数
//每一轮的比较都会确定出最后一个位置上的元素
for (int i = 0; i < arrays.length-1; i++) {
//内层循环控制的是每一轮排序需要比较的对数
//以需要排序的数列元素为10个为例,那么第一轮的内层循环需要比对的对数即为9次
for (int j = 0; j < arrays.length-i-1; j++) {
//若左边的元素比右边的元素大,那么交换二者的位置
if (arrays[j] > arrays[j+1]) {
arrays[j] ^= arrays[j+1];
arrays[j+1] ^= arrays[j];
arrays[j] ^= arrays[j+1];
}
}
}
}
}