public static void bubble_v2(int[] a) {
  int n = a.length - 1;
  while (true) {
    int last = 0; // 表示最后一次交换索引位置
    for (int i = 0; i < n; i++) {
      if (a[i] > a[i + 1]) {
        swap(a, i, i + 1);
        last = i;
      }
    }
    n = last;
    if (n == 0) {
      break;
    }
  }
}
未排序区域
已排序区域
索引
要交换
初始数组  动画速度(ms)