zoukankan      html  css  js  c++  java
  • 小白懂算法之冒泡排序

    一.冒牌排序原理

      假设有10个数。

      第一轮循环,第一个数和第二个数比较,如果第一个数大,第一个数和第二个数交换位置,否则不动;接着第二个数和第三个数比较,如果第二个数大,第二个数和第三个数交换位置,否则不动……第九个数和第十个数比较,如果第九个数大,第九个数和第十个数交换位置,否则不动。第一轮循环结束,最大的数挪到了第十个数的位置,比较进行了9次。

      第二轮循环,第一个数和第二个数比较,如果第一个数大,第一个数和第二个数交换位置,否则不动……第八个数和第九个数比较,如果第八个数大,第八个数和第九个数交换位置,否则不动。第二轮循环结束,第二大的数挪到了第九个数的位置,比较进行了8次

      ……

      第九轮循环,第一个数和第二个数比较,如果第一个数大,第一个数和第二个数交换位置,否则不动。第九轮循环结束,倒数第二大的数挪到了第二个数的位置,比较进行了1次。
      总结原理:假设序列中有n个数,前后相邻的两个元素进行比较,比较结果要么不动,要么交换位置

        1.最多比较n-1轮能保证序列排序完毕

        2.第一轮比较的次数是n-1次,之后每轮比较次数依次减1,n-1轮的比较次数为1

        3.每轮都会产生一个最大值,并且该值不参与到下轮的比较中。

    二.图解

    三.代码实现

      语言采用Java来实现

        /**
         *     冒泡排序方法
         * @param arr:需要排序的序列
         * @return
         */
        public static int[] BubbleSortByFor(int[] arr) {
            //两者交换的中间介
            int temp = 0;
            //双重循环
            for(int i=0;i<arr.length-1;i++)    //外层循环的最大轮数为 arr.length-1
                for(int j=0;j<arr.length-1-i;j++) {    //内层循环控制的是每轮的比较次数,每轮过后依次减1
                    //比较相邻两个数,若前面值大于后面值则交换,要么不动
                    if(arr[j]>arr[j+1]) {
                        temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            
            return arr;
        }

      main方法测试:

        public static void main(String[] args) {
            //创建一个无序数组
            int[] arr = new int[] {2,1,5,3,8,3,19,13,2};
            
            //调用冒牌排序方法进行排序,返回一个排序后的数组
            int[] sortedArr = BubbleSortByFor(arr);
            
            //遍历打印 数组的结果
            for(int i=0;i<sortedArr.length;i++) {
                System.out.print(sortedArr[i]+" ");
            }
            
        }
  • 相关阅读:
    不足百行代码 实体数组转DataTable通用类
    【翻译】WEB安全设计规范(4.1)
    也为读者说几句(兼为什么要骂烂书译者)
    重用之前应仔细分析问题用错轮子有感
    最长代码有多长:不符[单一职责原则(SRP)]的常见设计
    "千里之堤毁于蚁穴"重点项目不能交付之谜(一)泥淖中的验收测试
    企业快速开发框架基于配置文件
    从面试题看高级软件工程师需要哪些技艺
    面试英语【转】
    测试
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/13967761.html
Copyright © 2011-2022 走看看