java 基础之冒泡排序

 冒泡排序

package com.example.demo;

/**
 * 冒泡排序(大的往上冒或者小的往上冒,这里测试前者)
 */
public class Test {
    public static void main(String[] args) {
        int[] numbers={5,2,3,7,9,6};
        //外层循环控制轮数,每一轮比较出本轮的最大值(第一轮冒出整个数组最大的值,第二轮冒出整个数组第二大的值,以此类推..)
        //思考:外层循环为什么减1? 比如2个数进行冒泡,第一轮就冒出最大值,剩下的那个数就是最小值;比如3个数进行冒泡,第一轮
        //冒出最大值,第二轮冒出第二大的值,剩下的就是最小值.所以N个数进行冒泡时,只需比较N-1轮.
        for(int i=0;i<numbers.length-1;i++)
        {
            //内层循环控制每一轮比较的次数,依次递减1
            //思考:为什么内层和外层都有相同的numbers.length-1这部分?为什么还要减i?
            //N个数两两相比只要比N-1次,在数值上等于外层.还要减去渐变的i,是因为每比完1轮,都会比出一个最值(第一大,第二大..),
            //所以每轮需要比较的次数会递减1.
            for(int j=0;j<numbers.length-1-i;j++)
            {
                //相邻元素两两相比,前一个元素大于后一个元素,就交换位置(大的往后冒)
                if(numbers[j]>numbers[j+1])
                {
                    int temp=numbers[j];
                    numbers[j]=numbers[j+1];
                    numbers[j+1]=temp;
                }
            }
        }
        System.out.println("显示");
        for (int i=0;i<numbers.length;i++){
            System.out.println(numbers[i]);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/wxd772113786/article/details/103410641