冒泡排序图解(算法流程及Java代码实现)

冒泡排序图解(算法流程及Java代码实现)-mikechen

冒泡排序是Java排序中的经典算法,它也是学习其它Java排序的基础,所以非常重要@mikechen

冒泡排序定义

冒泡排序,英文名为Bubble Sort,是一种简单直观的排序算法。

冒泡排序,之所以叫做冒泡,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。

冒泡排序图解(算法流程及Java代码实现)-mikechen

 

冒泡排序基本思想

冒泡排序的核心思想:就是越小的元素会经由交换慢慢“浮”到数列的顶端。

冒泡排序的思路,主要分为如下4步:

1)比较相邻的元素,如果第一个比第二个大,就交换他们两个;

2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这步做完后,最后的元素会是最大的数;

3)针对所有的元素重复以上的步骤,除了最后一个;

4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

 

冒泡排序图解

上面我们理解了大致的思路,下面我们看一个动图就会更加清楚。

下图所示:

冒泡排序图解(算法流程及Java代码实现)-mikechen

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

 

冒泡排序代码案例

上面我们了解了思路与原理,下面我们具体编程程序来实现。

代码如下:

//冒泡排序
public static void bubbleSort(int[] arr){
//用来记录数据,便于互换数据
int temp = 0;
//当倒数第二个数确定,则无需继续排序。故为arr.length -1次
    for (int i = 0; i < arr.length -1; i++){
    /*从第一个数开始,让它跟往后一个数进行比较,然后如此类推,因为第一层每执行完一趟,
    都会确定数组末尾的一个数,已确定的数不需要加入比较,固有arr.length - i
     同时,每一次剩最后两个数时只需要执行一次,所以arr.length - i -1次
     */
        for (int j = 0;j < arr.length - i - 1; j++ ){
        //如果发现后一个数比前一个数小,则相互交换位置
            if(arr[j] > arr[j+1]){
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法