排序算法——冒泡排序

338 阅读1分钟

1. 算法思想

冒泡排序采用的是蛮力法的算法设计思想。

冒泡排序的基本思想是:两两比较相邻的记录,如果是反序则交换,直到没有记录发生交换时

2. 具体过程

  1. 将整个待排序数组的记录划分为有序区和无序区,初始时有序区为空,无序区包括整个待排序数组
  2. 对无序区从前向后依次比较相邻两个记录,若反序则交换,从而使得较小(大)的记录向前移动,值较大(小)的记录向后移动
  3. 重复执行步骤2,直到没有记录发生交换为止

3. 动画演示

假设我们需要把记录按从小到大排序,蓝色表示无序区,红色表示有序区,下面的动画表示第一趟排序的过程。

4. 代码实现

Java版:

/**
* @author created by linjunhao
* @date 2020/3/25
* @description 冒泡排序
*/
public class BubbleSort {

   public void sort(int[] array, int n) {
       //第一趟起泡排序的区间是[0, n-1];
       int bound, exchange = n - 1;
       //当上一趟排序有元素发生交换时就继续执行下一趟
       while (exchange != 0) {
           bound = exchange;
           exchange = 0;
           for (int j = 0; j < bound; j++) {
               //在待排序区间内,两两元素相互比较
               if (array[j] < array[j + 1]) {
                   //交换
                   int temp = array[j];
                   array[j] = array[j + 1];
                   array[j + 1] = temp;
                   //记录交换位置
                   exchange = j;
               }
           }
       }
   }
}

5. 其他排序