学习笔记之算法--冒泡排序

近期打算把简单的排序算法全部实现一遍,今天先写个冒泡排序作为打卡开始:

关注点:两层循环,循环次数length-1,优化标识flag减少循环次数

public static void bubbleSort(int[] arr){
    System.out.println("冒泡排序前:" + Arrays.toString(arr));
    for(int i=0;i < arr.length - 1;i++){
        boolean flag = true; //标示字段,减少循环次数
        for(int j = 0; j < arr.length -i -1 ;j++){
         //此处j < arr.length-i-1,因为每循环一次最后面的一个数字都会变为最大            if(arr[j] > arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
                flag = false;
            }
        }
        if(flag){//循环一圈均未交换,则表示已经全部有序
            break;
        }
    }
    System.out.println("冒泡排序后:" + Arrays.toString(arr));
}

你可能感兴趣的:(算法,冒泡排序,算法)