Java冒泡排序

2018-11-15  本文已影响0人  简书mhy

int[] arr = {5,3,2,7,9,6};

     冒泡排序法:
     第一次外循环,内循环中,5需要分别和后边的 5 个数进行比较             比较5次       
     第二次外循环,内循环中,3需要分别和后边的 4个数进行比较              比较4次
     (第一次外循环5和3已经比较过了,所有不需要再次比较,只需要比较后边的几个就可以了)
     第三次外循环,内循环中,2需要分别和后边的3个数进行比较
     ......  
      第五次外循环,内循环中,9只需要和6进行比较即可,到此结束           比较1次
     
     结论: 外循环:arr.length-1
         内循环:arr.length-1-i
public static void main(String[] args) {
        int x = 0 ;
        int[] arr = {5,3,2,7,9,6};
        /**
         * 冒泡排序法:
         * 第一次外循环,内循环中,5需要分别和后边的 5 个数进行比较             比较5次       
         * 第二次外循环,内循环中,3需要分别和后边的 4个数进行比较              比较4次
         * (第一次外循环5和3已经比较过了,所有不需要再次比较,只需要比较后边的几个就可以了)
         * 第三次外循环,内循环中,2需要分别和后边的3个数进行比较
         * ......  
         * 第五次外循环,内循环中,9只需要和6进行比较即可,到此结束           比较1次
         * 
         *结论: 外循环:arr.length-1
         *    内循环:arr.length-1-i
         */
        for (int i = 0; i < arr.length-1; i++) {   //外循环   控制排序趟数
            for (int j = 0; j < arr.length-1-i; j++) {  //内循环   控制每一趟排序多少次
                if(arr[j] > arr[j+1]){
                    change(arr, j, j+1);
                }
                x++;
            }
        }
        System.out.println("次数"+x);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
    /**
     * <p>功能描述:交换数组位置</p>
     * <p>方法名:change</p>
     * <p>@param arr 数组
     * <p>@param i交换的两个索引
     * <p>@param j
     */
    public static void change(int[] arr,int i,int j){
        int temp;
        temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
上一篇下一篇

猜你喜欢

热点阅读