冒泡排序思想
- 基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。
- 直观表达,每一趟遍历,将一个最大的数移到序列末尾。
算法描述
- 比较相邻的元素,如果前一个比后一个大,交换之。
- 第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。
-
第二趟将第二大的数移动至倒数第二位
......
因此需要n-1趟;
代码实现(Java)
/** * @ClassName: BubbleSortMain * @Author: Ming * @Date: 2021/3/4 下午5:27 * @Description: 冒泡排序 */ import com.jiajia.ArrayUtil.*; // 按包名导入 public class BubbleSortMain { public static void main(String[] args) { int[] arr = {2,5,1,3,8,5,7,4,3}; bubbleSort(arr); ArrayUtil.print(arr); } /** * 冒泡排序 * @param arr */ private static void bubbleSort(int[] arr) { if(arr==null || arr.length < 2 ){ return; } for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - i -1; j++) { // 这里说明为什么需要-1 if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } }