冒泡排序

思路分析:

  • 两两交换,把最大的值依次放在最后,实现排序,使用两层循环
  • 易错点是两层的循环的条件错误,第一层循环是需要循环的次数,比如长度为5,那么需要4次循环,第二层是需要交换的次数

 

代码:

public class Bubble {
    public void Sort(int[] arrays){
        int temp = 0;
        for(int i = 1; i < arrays.length; i++){ //第一层循环,注意参数值和条件
            int isChange = 0;
            for(int j = 0; j < arrays.length - i; j++){  //第二层循环,每次都要从0开始
                if(arrays[j] > arrays[j+1]){
                    temp = arrays[j];
                    arrays[j] = arrays[j+1];
                    arrays[j+1] = temp;
                    isChange = 1;
                }
            }
            if(isChange == 0){  //假入某一次循环没有任何交换,那说明已经是排序的数组,直接break
                break;
            }
        }
        for(int i = 0; i < arrays.length; i++){  
            System.out.println(arrays[i]);
        }
    }

    public static void main(String[] args) {
        Bubble sort = new Bubble();
        int[] array = {3,2,5,4,7,6};
        sort.Sort(array);
    }
}

 

时间复杂度O(n2),空间复杂度O(1), 稳定排序,当交换的条件是>的时候交换,不是>=,否则就不是稳定数组。

//第一层循环,注意参数值和条件
posted @ 2020-04-15 18:03  Coding-Liu  阅读(114)  评论(0)    收藏  举报