排序算法之冒泡排序

1 算法描述

  1. 首先在未排序数组的首位开始,和后面相邻的数字进行比较,如果前面一个比后面一个大那么则进行交换。
  2. 接下来在将第二个位置的数字和后面相邻的数字进行比较,如果大那么则进行交换,直到将最大的数字交换的数组的尾部。
  3. 然后再从排序的数组的首位开始,重复前面两部将最大的数字交换到未排序数组的尾部(交换到尾部的数字是已经拍好序的)。
  4. 如此反复,直到排序完毕。

2 算法实现

分解1:将第一个数字和后面相邻的数字进行比较,如果大则进行交换

        int[] arrs = {8, 6, 12, 7, 2, 5, 4, 1, 9};

        //判断大小
        if(arrs[0]>arrs[1]) {
            //如果大,则进行交换
            int temp = arrs[0];
            arrs[0] = arrs[1];
            arrs[1] = temp;
        }
        //输出结果
        for (int i = 0; i < arrs.length; i++) {
            System.out.print(arrs[i]+",");
        }

分解2:通过比较交换,将最大的数字交换到数组的尾部

        int[] arrs = { 8, 6, 12, 7, 2, 5, 4, 1, 9 };

        for (int i = 0; i < arrs.length - 1; i++) {
            // 判断大小
            if (arrs[i] > arrs[i + 1]) {
                // 如果大,则进行交换
                int temp = arrs[i];
                arrs[i] = arrs[i + 1];
                arrs[i + 1] = temp;
            }
        }

        // 输出结果
        for (int i = 0; i < arrs.length; i++) {
            System.out.print(arrs[i] + ",");
        }

分解3:重复执行分解1和分解2,将最大的数字交换到 未排序数组的尾部,直到排序完成


        int[] arrs = { 8, 6, 1, 7, 2, 5, 4, 12, 9 };

        //
         第一个轮交换,将数组中最大的数字交换到数组最后
        for (int i = 0; i < arrs.length - 1; i++) {
            // 判断大小
            if (arrs[i] > arrs[i + 1]) {
                // 如果大,则进行交换
                int temp = arrs[i];
                arrs[i] = arrs[i + 1];
                arrs[i + 1] = temp;
            }
        }
        //
        第二个轮交换,将数组中最大的数字交换到数组倒数第二位置
        for (int i = 0; i < arrs.length - 2; i++) {
            //分解1和分解2的代码
        }
        //
         第二个轮交换,将数组中最大的数字交换到数组倒数第三位置
        for (int i = 0; i < arrs.length - 3; i++) {
            //分解1和分解2的代码
        }
        // 输出结果
        for (int i = 0; i < arrs.length; i++) {
         

分解4:利用循环代替重复的操作

int[] arrs = { 8, 6, 1, 7, 2, 5, 4, 12, 9 };
        for (int j = 1; j < arrs.length; j++) {
            //
             第一个轮交换,将数组中最大的数字交换到数组最后
            for (int i = 0; i < arrs.length - j; i++) {
                // 判断大小
                if (arrs[i] > arrs[i + 1]) {
                    // 如果大,则进行交换
                    int temp = arrs[i];
                    arrs[i] = arrs[i + 1];
                    arrs[i + 1] = temp;
                }
            }
        }
        // 输出结果
        for (int i = 0; i < arrs.length; i++) {
            System.out.print(arrs[i] + ",");
        }

相关推荐

  1. 排序算法冒泡排序

    2024-03-24 06:52:03       20 阅读
  2. 排序算法二:冒泡排序

    2024-03-24 06:52:03       47 阅读
  3. 排序算法——冒泡排序

    2024-03-24 06:52:03       42 阅读
  4. 排序算法冒泡排序

    2024-03-24 06:52:03       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-24 06:52:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-24 06:52:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-24 06:52:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-24 06:52:03       20 阅读

热门阅读

  1. string的equals和object的equals一样吗?

    2024-03-24 06:52:03       18 阅读
  2. Unity 鼠标拖拽3D物体跟随移动的方法

    2024-03-24 06:52:03       20 阅读
  3. mosquitto - 笔记

    2024-03-24 06:52:03       16 阅读
  4. C++ Primer Plus第十八章笔记

    2024-03-24 06:52:03       18 阅读
  5. 并查集 笔记

    2024-03-24 06:52:03       22 阅读
  6. Web框架开发-Ajax(formData)

    2024-03-24 06:52:03       20 阅读
  7. 【笔试】20240323—美团笔试题目

    2024-03-24 06:52:03       21 阅读
  8. 数学建模常用代码

    2024-03-24 06:52:03       21 阅读
  9. C++和Python计算金融数学方程算法模型

    2024-03-24 06:52:03       20 阅读