需求

需要写一个优化后的冒泡排序。

解决

  • 为了简化代码,并且省去控制用的 flag,可以每次只排列剩余中的最小的,这

样可以使用 i 来同时控制排列的范围和当前最小的位置,使用 j 来控制进行比较的位置。

  • 需要注意: i 的表示控制排列的范围和当前最小位置,所以

i 的取值不包含最后一个数,毕竟比较至少要有两个数才能比较。 j 是进行比较的数值,所以 j 是从 i 的后一个数开始,直到最后一个数。

public static void bubbleSort(float[] src) {
    for (int i = 0; i < src.length - 1; i++) {
      for (int j = i + 1; j < src.length; j++) {
	  if (src[i] > src[j]) {
	      float tmp = src[i];
	      src[i] = src[j];
	      src[j] = tmp;
	  }
      }
    }
}