【Java·排序】:有关Java冒泡排序的记录

86 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第25天,点击查看活动详情

1️⃣前言

大家好,我是翼同学。

今天笔记的内容是:

  • 冒泡排序

2️⃣内容

2.1、冒泡概述

冒泡排序是常见的数组排序算法,我们需要遍历要排序的数组,一次比较两个元素,如果他们的顺序不对,则交换。

冒泡排序的优点在于稳定,但稳定的同时也比较慢,因为我们每次只能移动相邻两个数据。

2.2、实现思想

冒泡排序的基本实现思想如下:

  1. 比较相邻的两个数组元素,如果第一个元素比第二个元素大则交换,也就是升序;
  2. 对每一对相邻的元素进行相同的操作,从开始的第一对到最后一对;
  3. 此时经过一轮排序后,最大的元素将会跑到数组的末尾;
  4. 接着重复前面的步骤,当然,最后一个元素不用参加;
  5. 持续重复以上操作,则每次比较的元素对将越来越少;
  6. 直到没有任何一对元素需要比较,则排序结束。

2.3、动图示意

冒泡排序的最大特点在于,每一轮数组的遍历循环结束后,最大的一个数会跑到数组末尾。也就是说,下一轮循环就不用比较最后的数。每一轮循环都比上一轮循环的结束位置靠前一位。

数组排序.gif

2.4、代码实现

public class ArrayTest6 {
    public static void main(String[] args) {
        // 静态创建并初始化数组
        int[] arr = {37, 14, 25, 81, 9};
        System.out.print("原数组:[ ");
        // 打印数组
        for(int i : arr){
            System.out.print(i+" ");
        }
        System.out.println("]");
        //冒泡排序
        for (int i = 0; i < arr.length - 1; i++) {

            for (int j = 0; j < arr.length - i - 1; j++) {
                // 如果arr[j] > arr[j+1],则交换二者
                if (arr[j] > arr[j+1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
        System.out.print("排序后:[ ");
        // 排序结束后打印数组:
        for(int i : arr){
            System.out.print(i+" ");
        }
        System.out.println("]");
    }
}

程序运行后效果如下:

image.png

3️⃣写在最后

好了,今天的笔记就记到这里。