JAVA-冒泡排序

直接上代码了

package 排序;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-10-30-21-12
 */
public class 冒泡排序 {
    public static void main(String[] args) {
        int[] ints = new int[]{23,34,54,-324,2,1,1,98,1};
        bubbleSort(ints);
        for(int anInt:ints){
            System.out.print(anInt+" ");
        }
    }
    public static void bubbleSort(int[] arr){
        //外层循环控制的是:冒泡的总的次数,比如5个元素只需4次
        for (int i = 0; i < arr.length - 1; i++) {
            //内层循环控制的是每次冒泡比较的次数比如5个元素第一次冒泡需比较4次,第二次需3次
            for (int j = 0; j < arr.length-1-i; j++) {
                //注意这里是arr[j]与arr[j+1] 比较
                if(arr[j]>arr[j+1]){
                    int temp = arr[j];//大
                    arr[j]=arr[j+1];//小放前
                    arr[j+1]=temp;//大方后
                }
            }
        }
    }
}

运行结果

-324 1 1 1 2 23 34 54 98 

冒泡优化

package 排序;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-10-30-21-12
 * 冒泡优化原理:如果再某一次冒泡排序过程中,没有交换元素,则说明该数组已经有序
 */
public class 冒泡排序 {
    public static void main(String[] args) {
        int[] ints = new int[]{1,2,5,3,4};
        bubbleSort(ints);
        for(int anInt:ints){
            System.out.print(anInt+" ");
        }
    }
    public static void bubbleSort(int[] arr){
        //优化-默认为true
        boolean flag = true;
        //外层循环控制的是:冒泡的总的次数,比如5个元素只需4次
        for (int i = 0; i < arr.length - 1; i++) {
            //内层循环控制的是每次冒泡比较的次数比如5个元素第一次冒泡需比较4次,第二次需3次
            for (int j = 0; j < arr.length-1-i; j++) {
                //注意这里是arr[j]与arr[j+1] 比较
                if(arr[j]>arr[j+1]){
                    flag = false;//代表数组还是无序的
                    int temp = arr[j];//大
                    arr[j]=arr[j+1];//小放前
                    arr[j+1]=temp;//大方后
                }
            }
            //一旦flag为true则代表此时数组有序了就可以退出了
            if(flag){
                break;
            }
        }
    }
}

结果

1 2 3 4 5 

结束

posted @ 2021-10-30 21:32  ╰(‵□′)╯  阅读(47)  评论(0编辑  收藏  举报