Java冒泡排序

本文最后更新于:2021年9月2日 晚上

1、冒泡排序

import java.util.Arrays;
/**
 * 冒泡排序
 */
public class Test01 {
    public static void main(String[] args) {
        int[] values = {3,1,6,2,9,0,7,4,8,5};
        System.out.println("排序前数组:"+ Arrays.toString(values));
        int temp;
        for (int i = 0; i < values.length; i++) {
            for (int j = 0; j < values.length-i-1; j++) {
                if (values[j]>values[j+1]){
                    temp = values[j];
                    values[j] = values[j+1];
                    values[j+1] = temp;
                }
            }
            System.out.println("第"+(i+1)+"趟,完成时"+Arrays.toString(values));
        }
    }
}

image-20210808175651613

2、优化代码:

从上图得知,第五趟排好后就可以直接输出了。所以对代码进行优化

import java.util.Arrays;

/**
 * 冒泡排序
 */
public class Test01 {
    public static void main(String[] args) {
        int[] values = {3,1,6,2,9,0,7,4,8,5};
        System.out.println("排序前数组:"+ Arrays.toString(values));
        int temp;   //用来交换的临时变量
        //定义一个布尔类型的变量,标记数组是否已达到有序状态
        boolean flag = true;
        for (int i = 0; i < values.length; i++) {
            for (int j = 0; j < values.length-i-1; j++) {
                if (values[j]>values[j+1]){
                    //两两比较,如果大于就交换
                    temp = values[j];
                    values[j] = values[j+1];
                    values[j+1] = temp;
                    flag = false;
                }
            }
            if (flag){
                System.out.println("结束排序!");
                break;
            }else {
                flag = true;
            }
            System.out.println("第"+(i+1)+"趟,完成时"+Arrays.toString(values));
        }
    }
}

image-20210808181535597

3、把算法封装起来,以后用可以直接调用方法

import java.util.Arrays;

/**
 * 冒泡排序
 */
public class Test01 {
    public static void main(String[] args) {
        int[] values = {3,1,6,2,9,0,7,4,8,5};
        bubbleSort(values);
    }
    public static void bubbleSort(int[] values){
        //int[] values = {3,1,6,2,9,0,7,4,8,5};
        System.out.println("排序前数组:"+ Arrays.toString(values));
        int temp;   //用来交换的临时变量
        //定义一个布尔类型的变量,标记数组是否已达到有序状态
        boolean flag = true;
        for (int i = 0; i < values.length; i++) {
            for (int j = 0; j < values.length-i-1; j++) {
                if (values[j]>values[j+1]){
                    //两两比较,如果大于就交换
                    temp = values[j];
                    values[j] = values[j+1];
                    values[j+1] = temp;
                    flag = false;
                }
            }
            if (flag){
                System.out.println("结束排序!");
                break;
            }else {
                flag = true;
            }
            System.out.println("第"+(i+1)+"趟,完成时"+Arrays.toString(values));
        }
    }
}