zoukankan      html  css  js  c++  java
  • 冒泡排序

    import java.util.Arrays;
    
    public class Test {
        public static void main(String[] args) {
            int[]a={100,5,8,9,2,12,3,89,0,65,5,8,12,1};
             a = bubbleSort(a);
            System.out.println(Arrays.toString(a));
    
        }
    
        /**
         * (1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。
           (2)这样对数组的第 0 个数据到 N-1 个数据进行一次遍历后,最大的一个数据就“沉”到数组第
              N-1 个位置。
           (3)N=N-1,如果 N 不为 0 就重复前面二步,否则排序完成。
         * 数组[0,1,6,5],长度为4
         * 第一轮两两比较 0跟1比,不用交换,1跟6比,不用交换,6跟5比,交换位置,结果为[0,1,5,6],比较结束后,最后一个是最大值了,此时比较了3次
         * 第二轮两两比较,此时最后一位不用比了,相当于只比较[0,1,5] 0跟1比,不用交换,1跟5比,不用交换,此时比较了2次
         * 第三轮两两比较,此时最后一位不用比了,相当于只比较[0,1] 0跟1比,此时比较了1次
         * 由此可以知道:比较的轮数为长度4-1=3轮,每轮比较的次数为数组长度减去第几轮,如第一轮为4-1=3,第二轮为4-2=2,第三轮为4-3=1
         * 每一轮最后一个数字的索引为数据长度-轮数,如第一轮的5,索引为4-1=3,第二轮的5,索引为4-2=2,第三轮的1,索引为4-3=1
         */
    
        public static int[] bubbleSort(int[]arr){
            if(arr==null || arr.length==0){
                return arr;
            }
            //外层循环代表比较的轮数,总轮数是长度-1,轮数从1开始
            for (int i = 1; i <= arr.length-1; i++) {
                //内层循环代表该轮下比较的次数,该论比较的总次数等于数组长度减去第几轮,下面为何不是j<=j<arr.length-i呢?因为j最大是arr.length-i,但因为下面有j+1,所以防止数组越界,这里小于它
                for(int j=0;j<arr.length-i;j++){
                    int temp;
                    if(arr[j]>arr[j+1]){//如果索引为j的数据比下一位大,则交换位置,这里j+1最大值就是arr.length-i,也就是每次比较的最大位
                       temp=arr[j];
                       arr[j]=arr[j+1];
                       arr[j+1]=temp;
                   }
                }
                
            }
            return arr;
        }
    }
  • 相关阅读:
    Linux crontab定时执行任务 命令格式与详细例子
    git的color configura
    Linux不用使用软件把纯文本文档转换成PDF文件的方法
    linux sar命令详细说明相关参数
    linux下sar tool command note
    Linux see 网卡当前流量
    安装调试Installing Odoo
    寻找[nginx] 由Lua 粘合的Nginx生态环境-- agentzh
    git检查与放弃本地的代码修改情况
    发现linux shell中$0,$?,$!等的特殊用法
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/10895342.html
Copyright © 2011-2022 走看看