冒泡排序算法

冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。这个过程类似于水泡向上升一样,因此而得名。原理如下动图:

冒泡排序原理

动图(来源参考资料)

  • 比较相邻的元素,如果前一个比后一个大,交换之。
  • 第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。
  • 第二趟将第二大的数移动至倒数第二位
    ......
    因此需要n-1趟;  

/**
 * 冒泡排序
 */
public class BubbleSort {
    public static void bubbleSort(int[] arr) {
        if(arr == null || arr.length == 0)
            return ;
        for(int i=0;i<arr.length-1;i++)
        {
            for(int j=0;j<arr.length-1;j++)
            {
                if(arr[j]>arr[j+1])
                {
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] arr={2,7,5,3,6,1,4};
        BubbleSort.bubbleSort(arr);
        System.out.println(Arrays.toString(arr));

    }
}

冒泡排序的时间复杂度为O(n^2)。

posted @ 2020-06-07 16:37  言默默  阅读(70)  评论(0)    收藏  举报