zoukankan      html  css  js  c++  java
  • 大话数据结构----冒泡排序Bubble sort

    冒泡排序是排序算法中最基础的排序算法;

    原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换

    package com.neuedu.java;
    
    public class BubbleSort {
        public static void main(String[] args) {
             int [] arr=new int[]{0,9,5,45,12,94,56,7};
             BubbleSort(arr);
             for(int i=0;i<arr.length;i++){
                 System.out.print(arr[i]+" ");
             }
        }
         /*
         *冒泡排序算法
         */
        public static void  BubbleSort(int [] a){
            int count=0;
            int length=a.length;
            for(int i=
    0
    ;i<length-1;i++){
               for(int j=length-2;j>=i;j--){
                   if(a[j+1]<a[j]){
                      int tem=a[j+1];
                      a[j+1]=a[j];
                      a[j]=tem;
                   }   
                   count++;
               }
            }
            System.out.println("总循环次数:"+count);
        }
    }

    如果待排序数组已经有序,用上面的算法会再完全比较一遍,我们还可以进行改进,也就是当检测到数组已经有序的时候就可以停止了

    冒泡排序的优化

    package com.neuedu.java;
    
    public class BubbleSort {
        public static void main(String[] args) {
             int [] arr=new int[]{0,9,5,45,12,94,56,7};
             BubbleSort(arr);
             for(int i=0;i<arr.length;i++){
                 System.out.print(arr[i]+" ");
             }
        }
         /*
         *冒泡排序算法的优化
         */
    
        public static void  BubbleSort(int [] a){
            int count=0;  //记录循环次数
            int length=a.length;
    
            
    boolean flag=true; //设置一个标记,判断数组是否已经有序
    for(int i=
    0
    ;i<length-1
    &&flag
    ;i++){//数组不有序,继续循环
                
    flag=false; //初始值为false
    for(int j=length-2;j>=i;j--){
                   if(a[j+1]<a[j]){
                      int tem=a[j+1];
                      a[j+1]=a[j];
                      a[j]=tem;
                      
    flag=true;  //进行数据交换,说明还不是有序数组
    
                   }   
                   count++;
               }
            }
            System.out.println("总循环次数:"+count);
        }
    }
  • 相关阅读:
    c++继承与多态
    逻辑运算符
    页面分栏布局
    js中的三大特殊数据:undefined,null,NaN
    逻辑分支中if小括号中的隐式转换
    最小高度的兼容方法
    js数据类型的转换
    ognl.OgnlException: target is null for setProperty(null, "goodsSize", [Ljava.lang.String;@c3bb5。
    解决拦截器的对于参数传递无效问题
    引用外部js乱码问题
  • 原文地址:https://www.cnblogs.com/Actexpler-S/p/7530809.html
Copyright © 2011-2022 走看看