冒泡排序

2020-12-01  本文已影响0人  历十九喵喵喵

思想:给一组数组,两两进行比较,当顺序错误时,进行位置的交换,需要一个中介帮助交换,一次排序过后,最大的一位数会排到数组最后(从小到大排),重复操作,即可得到排序好的数组。

优化:设置一个布尔值变量,标记数组是否达到了有序状态,当第一层外循环时,设置 flag 为 true, 表明此时数组是有序的,当内层循环发生交换时,就说明数组无序,需要继续交换,此时 flag 为 false, 一次排序之后 若 flag 仍然为 true, 说明不需要继续排序了。

代码:

public class BubbleSortDemo {

public static void main(String[] args) {

int[] values={2,5,8,4,3,7,9};

bubbleSort(values);

System.out.println(Arrays.toString(values));

}

public static void bubbleSort(int[] a){

int temp;

boolean flag;

//外层循环,当有 n 个数组,至多需要 n-1 躺排序

        for(int i =0;i

//设置一个布尔值变量,标记数组是否达到了有序状态

            flag =true;

//内层循环,每一趟都从数列的前两个元素开始比较,比较到无序数组的最后

            for(int j=0;j

//如果前一个元素大于后一个元素,则交换位置

                if(a[j] > a[j+1]){

temp = a[j];

a[j] = a[j+1];

a[j+1] = temp;

//发生了交换,表明数组在本趟处于无序状态,需要继续比较,

                    // 即,只要发生了交换,flag 设为false

                    flag =false;

}

}

if(flag){

break;

}

}

}

}

上一篇下一篇

猜你喜欢

热点阅读