美文网首页
冒泡排序

冒泡排序

作者: 历十九喵喵喵 | 来源:发表于2020-12-01 09:13 被阅读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;

    }

    }

    }

    }

    相关文章

      网友评论

          本文标题:冒泡排序

          本文链接:https://www.haomeiwen.com/subject/acurwktx.html