一、基本思想
通过对待排序序列从前到后(从下标小的元素开始),以此比较相邻元素的值,若发现逆序则交换。没有优化时要进行arr.length-1趟排序。
二、优化
因为排序过程中,各个元素不算靠近自己的位置,若在某一趟排序中,没有元素发生交换,就说明已完成序列排序。因此可以设置一个flag标志来判断在一趟排序中是否发生元素交换。优化后能够减少需要排序的趟数。
三、图解
四、代码
package com.sort;
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {
3, 9, -1, 10, -2 };
// 为了容易理解,下面展示冒泡排序的过程
// 第一趟排序,就是将最大的数排在最后一个位置
for (int j = 0; j < arr.length - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
// 第一趟排序的结果
System.out