冒泡排序及其优化

冒泡排序

public class Demo07 {

    public static void main(String[] args) {
        int[] a = {52,32,62,42,84,26,35,47,65};
        int[] ints = sortArray(a);
        System.out.println(Arrays.toString(ints));
    }

    /*
    比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置每一次比较,都会产生出一个最大,或者最小的数字;
    下一轮则可以少一次排序!
    依次循环,直到结束!
     */
    public static  int[] sortArray(int[] arrays){
        //冒泡排序
        int temp = 0;//定义一个临时变量
        for (int i = 0; i < arrays.length-1; i++) {//外层循环,判断我们需要循环多少次
            for(int j = 0;j < arrays.length-1-i;j++){//内层循环,比较大小
                if(arrays[j+1] > arrays[j]){//应用临时变量进行交换
                    temp = arrays[j];
                    arrays[j] = arrays[j+1];
                    arrays[j+1] = temp;
                }
            }
        }
        return arrays;
    }
}

冒泡排序优化

public class Demo07 {

    public static void main(String[] args) {
        int[] a = {52,32,62,42,84,26,35,47,65};
        int[] ints = sortArray(a);
        System.out.println(Arrays.toString(ints));
    }

    /*
    比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置每一次比较,都会产生出一个最大,或者最小的数字;
    下一轮则可以少一次排序!
    依次循环,直到结束!
     */
    public static  int[] sortArray(int[] arrays){
        //冒泡排序
        int temp = 0;//定义一个临时变量
        boolean flag = false;//定义一个标志位
        for (int i = 0; i < arrays.length-1; i++) {//外层循环,判断我们需要循环多少次
            for(int j = 0;j < arrays.length-1-i;j++){//内层循环,比较大小
                if(arrays[j+1] > arrays[j]){//临时变量进行交换
                    temp = arrays[j];
                    arrays[j] = arrays[j+1];
                    arrays[j+1] = temp;
                    flag = true;
                }
            }
            if(flag == false){
                break;
            }
        }
        return arrays;
    }
}
posted @ 2021-07-10 09:05  海风不咸  阅读(52)  评论(0)    收藏  举报