冒泡排序的实现

33 阅读1分钟

1.冒泡排序的思想:

  • 从头开始两两比较,把较大的元素与较小的元素进行互换
  • 每轮把当前最大的一个元素存入到数组当前的末尾

2.冒泡排序的实现步骤:

  • 定义一个外部循环控制总共需要冒几轮(数组的长度 - 1)

  • 定义一个内部循环,控制每轮依次往后比较几个位置/控制每轮比较的次数(数组的长度 - 当前比较的轮数)

  • 如果当前位置的元素值 > 后一个位置的元素值,两者互换

     public static void main(String[] args) {
           
            /* 冒泡排序的实现步骤:  1.定义一个外部循环控制总共需要冒几轮(数组的长度-1)
                                 2.定义一个内部循环控制每轮依次往后比较几个位置/每轮比较的次数(数组的长度-当前的轮数)
                                 3.如果当前位置的元素值大于后一个位置的元素值,两者交换
             */
            // 1.动态初始化数组
            int[] datas = new int[5];
            // 2.键盘录入一组数字
            Scanner sc = new Scanner(System.in);
            for (int i = 0; i < datas.length; i++) {
                System.out.println("请您录入第" + (i + 1) + "个位置的数值:");
                datas[i] = sc.nextInt();
            }
            // 3.冒泡排序的实现
            // datas = [3,5,6,8]
            // i = 0 第一轮  0 1 2
            // i = 1 第二轮  0 1
            // i = 2 第三轮  0
            // 定义一个外部循环控制总共需要冒几轮(数组的长度-1)
            for (int i = 0; i < datas.length - 1; i++) {
                // 定义一个内部循环控制每轮往后比较几个位置/定义一个内部循环控制每轮比较的次数(数组的长度-当前比较的轮数)
                for (int j = 0; j < datas.length - i - 1; j++) {
                    // 如果当前位置的元素值大于后一个位置的元素值,两者互换
                    if (datas[j] > datas[j + 1]) {
                        int temp = datas[j + 1];
                        datas[j + 1] = datas[j];
                        datas[j] = temp;
                    }
                }
            }
            // 遍历数组输出
            System.out.println("冒泡排序后的顺序为:");
            for (int i = 0; i < datas.length; i++) {
                System.out.print(datas[i] + "\t");
            }
        }