冒泡排序是Java排序中的经典算法,它也是学习其它Java排序的基础,所以非常重要@mikechen
冒泡排序定义
冒泡排序,英文名为Bubble Sort,是一种简单直观的排序算法。
冒泡排序,之所以叫做冒泡,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。
冒泡排序基本思想
冒泡排序的核心思想:就是越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序的思路,主要分为如下4步:
1)比较相邻的元素,如果第一个比第二个大,就交换他们两个;
2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这步做完后,最后的元素会是最大的数;
3)针对所有的元素重复以上的步骤,除了最后一个;
4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
冒泡排序图解
上面我们理解了大致的思路,下面我们看一个动图就会更加清楚。
下图所示:
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
冒泡排序代码案例
上面我们了解了思路与原理,下面我们具体编程程序来实现。
代码如下:
//冒泡排序 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面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》