冒泡排序

冒泡排序

定义

一组数据中俩俩进行比较,一轮后找出这组中最大的数,放在最后的位置,再去找第二大的数,也可以少比较一次。八大排序算法之一。

两层循环:外层控制次数,遍历完这个数组,从0开始到length-1次;内层比较,要找出length-1个最大值,第一个要比较length-1次,第二个要length-2次。。。。。第length-1个要比较1次,即length-1-外层i=1就排序完成,此时外层循环了i+1次(从0开始),内层循环的条件为初始为0,控制 <length-1-外层i,迭代加就行

因为从0开始,外层循环次数=最大值个数,比较一组数只要找出length-1个最大值,所以比较完外层循环次数为length-1,(从0开始,要加1,表面要减1)外层标记数i=length-1-1(即i<length-1);

 public static void main(String[] args) {
        int[] b = {4, 1, 7, 5, 9,2 , 0};
        sort(b);
        for (int i : b) {
            System.out.print(i+"\t");
        }
    }

    static int[] sort(int[] a) {
        int temp = 0;
        //外层循环确定循环次数
        for (int i = 0; i < a.length - 1 ; i++) {
            //内层循环俩俩比较
            // (0和1,1和2.。。。。可以知道0和1但不知道0和2,需要再次比较,
            // 第一次找出最大值放末尾,第二次找到第二大的放末尾。。。。。
            // (循环次数由外层循环控制))最后一次不用比较i=5时,就是数组[0]和数组[1]的比较;
           for(int j=0;j<a.length-1-i;j++){
               if (a[j] > a[j + 1]) {
                   temp =a[j+1];
                   a[j + 1] = a[j];
                   a[j] = temp;
           }
            }
        }
        return a;
    }

posted on 2021-02-26 19:28  码路行  阅读(73)  评论(0)    收藏  举报

导航