zoukankan      html  css  js  c++  java
  • 关于冒泡排序的补充

    开始今天的复习!

    昨天晚上想了一个问题:冒泡排序方法是不是可以带返回值类型呢?

    考试的时候是那样写了,但是没有写好,回头翻了笔记,发现是可以的。

    敲个代码来加深下印象:

    /**
     * @Date: 2019-11-24 08:40
     * @King: No blood!No bone!No ash!!!
     */
    public class TestBubbleSortIII {
      public static void main(String[] args) {
        /**
         * 定义一个数组
         */
        int [] array = {12,21,16,5,36,22,2,9,66};
        /**
         * 先输出排序前的样子,练习下for循环遍历数组
         */
        System.out.println("排序前:");
        for (int i = 0;i < array.length;i++) {
          System.out.print(array[i] + "  ");
        }
        System.out.println();
        /**
         * 调用排序方法
         */
        bubbleSort(array);
        /**
         * 练习下for-each循环遍历数组
         */
        System.out.println("排序后:");
        for (int i : array) {
          System.out.print(i + "  ");
        }
      }
    
      /**
       * 带返回值类型的冒泡排序
       */
      public static int [] bubbleSort (int [] array) {
        /**
         * 外层for循环--排序趟数
         */
        for (int i = 0;i < array.length;i++) {
          /**
           * 定义一个标识,判断排序过程是否发生元素交换位置,默认false代表没有交换
           * (一开始自己觉得默认false代表数组无序,到后面判断时思维会混乱)
           */
          boolean flag = false;
          /**
           * 内层循环比较相邻元素的大小,前者大于后者则交换位置
           * 每比较一趟,i + 1,j - 1,j与i的关系可以用j <array.length - 1 - i表示
           */
          for (int j = 0;j <array.length - 1 - i;j++) {
            if (array[j] > array[j + 1]) {
              int temp = array[j + 1];
              array[j + 1] = array[j];
              array[j] = temp;
              flag = true;
            }
          }
          /**
           * 一趟循环下来数组中未发生元素交换位置--数组已经有序,结束循环
           */
          if (!flag) {
            break;
          }
        }
        return array;
      }
    }

    输出结果:

    排序前:
    12 21 16 5 36 22 2 9 66
    排序后:
    2 5 9 12 16 21 22 36 66

    总结:思维要活,也要经得住验证。

    Develop good habits and use them to cover up bad habits.
  • 相关阅读:
    几个工具类
    C#学习-程序集和反射
    Unity学习-鼠标的常用操作(八)
    Unity学习-碰撞检测(七)
    Unity学习-摄像机的使用(六)
    Unity学习-地形的设置(五)
    Unity学习-预制(四)
    Unity学习-元素类型(三)
    Unity学习-软件的基本操作(二)
    Unity学习-工具准备(一)
  • 原文地址:https://www.cnblogs.com/sinoaccer/p/11921326.html
Copyright © 2011-2022 走看看