zoukankan      html  css  js  c++  java
  • 冒泡排序算法分析及优化

    package com.ysh.demo;
    import org.junit.Test;
    import java.util.Arrays;
    
    /*
          冒泡排序:
         一个数组冒泡,如果左边数字大于右边数字,那么交换位置。
         数组:
         arr = {1,2,3},
         分析:
         第一次:确定一个最大值,排在数组的最后一位,需要比较的次数为arr,length-1-i,i为外循环的计数
         第二次:确认数组倒数第二位,需要比较的次数为arr,length-1-i
         ...
    
         总结:
         只需要内外两个循环即可。
         for (int i = 0; i<arr.length-1;i++){
            for (int j = 0;j<arr.length-i-1;j++){}
         }
    
     */
    
    public class SortSet {
    
        public static void main(String[] args) {
            int[] arr = {0,2,3,1,2,4,5,0,8};
            //定义临时变量,用于交换
            int temp = 0;
            //外循环,次数为数组长度-1
            for (int i=0; i<arr.length-1;i++){
                //内循环组长度-1-i,
                for (int j = 0;j<arr.length-i-1;j++){
                    if (arr[j]>=arr[j+1]){
    
                        temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }
    
        }
    
        /*
        冒泡算法优化
        引入计数器
         */
    
        @Test
        public void bubbleAdvance(){
            int[] arr = {0,1,2,3,5,4};
            //定义临时变量,用于交换
            int temp=0;
            //定义标志位
            boolean flag;
            //外循环,次数为数组长度-1
            for (int i = 0; i<arr.length-1;i++){
                flag=true;
                //内循环组长度-1-i,
                for (int j = 0;j<arr.length-i-1;j++){
                    if (arr[j]>arr[j+1]){
                        temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                        flag=false;
                    }
                }
                if (flag){
                    System.out.println("第"+i+"次循环,排序结束");
                    System.out.println(Arrays.toString(arr));
                    return;
                }
            }
        }
    }
    

      

    忘了他,我撸代码养你
  • 相关阅读:
    Alpha阶段项目展示
    Alpha阶段测试报告
    300种常用非处方中成药--06骨伤科用药/07皮肤科用药
    300种常用非处方中成药--05五官科用药
    300种常用非处方中成药--04儿科用药
    300种常用非处方中成药--02外科用药/03妇科用药
    300种常用非处方中成药-01内科用药
    文科思人,理科格物
    谁动我的奶酪--经典句子
    博士 水上飘
  • 原文地址:https://www.cnblogs.com/theworld/p/12110935.html
Copyright © 2011-2022 走看看