冒泡排序

冒泡排序

1、比较数组中,两个相邻元素的啊小,如果第一个数比第二个数大 ,就交换它们 的位置

2、每一次比较,都会产生一个最大,或者最小的数

3、依次循环,直到结束

public static int[] sort(int[] array){
    int temp =0;
    //外层循环,判断需要多少次
    for (int i = 0; i < array.length-1; i++) {
        //内层循环,比较相邻两个数,如果第一个数比第二个数大,交换位置
        for (int j = 0; j < array.length-1-i; j++) {
           if (array[j+1]<array[j]){
               temp = array[j];
               array[j] = array[j+1];
               array[j+1] = temp;
           }
        }
    }
    return array;
}

优化:添加一个标识位

public static int[] sort(int[] array){
    //临时变量
    int temp =0;

    //外层循环,判断需要多少次
    for (int i = 0; i < array.length-1; i++) {

        boolean flag = false;//通过flag标识位减少没有意义的比较
        
        //内层循环,比较相邻两个数,如果第一个数比第二个数大,交换位置
        for (int j = 0; j < array.length-1-i; j++) {
           if (array[j+1]<array[j]){
               temp = array[j];
               array[j] = array[j+1];
               array[j+1] = temp;
               flag = true;
           }
        }
        if (flag == false){
            break;
        }
    }
    return array;
}
posted @ 2022-03-26 13:01  lobort  阅读(30)  评论(0)    收藏  举报