zoukankan      html  css  js  c++  java
  • Java_冒泡排序_原理及优化

    冒泡排序及其优化

    一.原理及优化原理

      1.原理讲解

        冒泡排序即:第一个数与第二个数进行比较,如果满足条件位置不变,再把第二个数与第三个数进行比较.不满足条件则替换位置,再把第二个数与第三个数进行比较,以此类推,执行完为一个趟,趟数等于比较的个数减一.

      2.冒泡排序原理图示:(以98765序列为例,排序结果从小到大)

       

      3.冒泡排序优化

      优化版:每一次减少一次循环(即红色部分不需要在进行比较)

      

      4.冒泡排序最终版

      最终版:每一趟减少一次循环(删除线不需要再执行)

      

    二.实现代码

      1.冒泡排序实现主要代码

      
    public static void main(String[] args) {
            int []arr={9,8,7,6,5};
            
            int len=arr.length;
            
            for (int i=0;i<len-1;i++) {
                
                for (int j=0;j<len-1;j++) {
                    if(arr[j]>arr[j+1]){
                        int temp=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                    }
                }
            }
            System.out.println(Arrays.toString(arr));
    
        }
    冒泡排序实现代码

      

      2.冒泡排序优化代码

      
    public static void main(String[] args) {
            int []arr={9,8,7,6,5,10};
    
            int len=arr.length;
    
            for (int i=0;i<len-1;i++) {
    
                for (int j=0;j<len-1-i;j++) {
                    if(arr[j]>arr[j+1]){
                        int temp=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                    }
                }
            }
            System.out.println(Arrays.toString(arr));
    
        }
    冒泡排序优化代码

      

      3.冒泡排序最终代码

      
    public static void main(String[] args) {
            int []arr={9,8,7,6,5};
            
            int len=arr.length;
            
            for (int i=0;i<len-1;i++) {
                System.out.println("第"+(i+1)+"趟");
                //增加判断位
                boolean flag=true;
                for (int j=0;j<len-1-i;j++) {
                    System.out.println("第"+(j+1)+"次");
                    
                    if(arr[j]>arr[j+1]){
                        int temp=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                        flag=false;
                    }
                    System.out.println(Arrays.toString(arr));
                }
                //如果上面没有执行直接退出
                if(flag){
                    break;
                }
            }
            System.out.println(Arrays.toString(arr));
    
        }
    冒泡排序最终版

    三.注意事项

      1.多思考

  • 相关阅读:
    机房管理日记——2014/10/17
    ServletContext加入和访问
    打开系统设置
    阅读本书要瘦《面向对象的葵花宝典》札记-面向对象的基础
    Codeforces 327B-Hungry Sequence(素数筛)
    angularJS socket
    【Nginx】如何应对HTTP组态
    Android ActionBar详解(一):ActionBar概述及其创建
    Android高级图片滚动控件,编写3D版的图片轮播器
    Android自定义View的实现方法,带你一步步深入了解View(四)
  • 原文地址:https://www.cnblogs.com/aihuadung/p/9260831.html
Copyright © 2011-2022 走看看