排序算法之冒泡排序

73 阅读1分钟

冒泡排序的通俗解释

排序过程如冒泡一样,比如我们排正序,每一次都有一个起始数据,用这个数据和它的下一个的数据比大小,如果我们的起始数据比它下一个的数据大,那么我们就交换这两个数据,然后指针向后移动,如果起始数据小于等于它的下一个,那么不做交换,只指针后移,这样第一趟下来,最大的数就让我们移动到了最后,数组的最后以为就保留下来,下一次循环中最大的数就到了倒数第二个为止,以此类推,直到排序完成。

所以上述的过程其实就是经历了2层循环,第一层循环代表着从后往前确定由大到小的数,第二层循环代表着数据比较,找到每次循环中的最大值,所以时间复杂度为O(n^2)。

冒泡排序过程的动图展示

冒泡排序.gif

冒泡排序的代码实现

public static void main(String[] args) throws Exception {
    int[] data = new int[]{4,3,2,6,1,8,5,4,10,9};
    sort(data);
    System.out.println(Arrays.toString(data));
}

public static void sort(int[] data){
    //第一层循环,从后往前,不断的确定下层循环找到的最大值
    for (int i = data.length-1; i >0; i--) {
        //找到每次循环的最大值
        for(int j = 0;j<data.length-1;j++){
            if(data[j]>data[j+1]){
                int temp = data[j];
                data[j] = data[j+1];
                data[j+1] =temp;
            }
        }
    }
}