• 冒泡算法的实现原理
  • 发布于 2个月前
  • 195 热度
    0 评论
  • 顾及谁
  • 24 粉丝 43 篇博客
  •   
原理
外层循环:确认哪些元素未进行排序
内层循环:将未排序元素中的相邻元素进行比较,相对较小的元素放到前面

外层循环原理图

示例
package wxw.mengyuan;
/**
 * 堆代码 duidaima.com
 * 冒泡排序
 */
public abstract class BubbleSorting {

  /**
   * 对数组中的元素进行排序
   *
   * 原理
   * (1) 外层循环:确定未排序的元素
   * (2) 内层循环:将相邻元素进行比较,较大值放到后面
   *
   * @param arr 要排序的数组
   */
  public static void sort(Comparable[] arr) {
    // 外层循环:确定未排序的元素
    for(int i = arr.length - 1; i > 0; i--) {
      // 内层循环:将相邻元素进行比较,较大值放到后面
      for(int j = 0; j < i; j++) {
        if (greater(arr[j], arr[j+1])) {
          exch(arr, j, j+1);
        }
      }
    }
  }

  /**
   * 校验第一个元素是否比第二个元素大
   *
   * @param v 第一个元素
   * @param w 第二个元素
   */
  private static boolean greater(Comparable v, Comparable w) {
    return v.compareTo(w) > 0;
  }

  /**
   * 将数组中索引为i、j的两个元素交换位置
   *
   * @param arr 数组
   * @param i 索引i
   * @param j 索引j
   */
  private static void exch(Comparable[] arr, int i, int j) {
    Comparable temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
  }

}

用户评论