冒泡排序原理
冒泡排序(Bubble Sort)是一种简单直观的排序算法。冒泡排序每次比较两个元素,如果元素顺序错误就把他们交换过来。一直重复该步骤,直到没有元素需要交换,也就是说该数组已经完成排序。冒泡排序的名字由来是因为越小的元素会经由交换慢慢"浮"到数组的最前面。
冒泡排序的步骤
- 从第一个元素开始,比较相邻的元素大小,如果前一个元素比后一个元素大,就交换二者的顺序,直到比较到数组的最后两个元素;
- 经过第一轮排序后,数组中最大的元素已经被排到数组的最后一位,因此之后再进行排序时,最后一个元素将不再参与排序过程;
- 第二轮排序开始,依然从第一个元素开始,按照步骤1进行排序,第二轮排序的次数要比第一轮排序的次数少1次;
- 以此类推,直到所有元素都完成排序。
排序过程演示
分析
- 由排序步骤可以看出,对于一个长度为 n 的数组,使用冒泡排序共需经过 n-1 轮排序,每轮排序次数为 n-轮次。
- 使用嵌套for循环实现,第一层for循环控制排序的轮数,第二层for循环控制每轮排序的次数。
- 循环体内使用 if 判断相邻元素大小,若前一个元素大于后一个元素,执行顺序交换。
算法实现
/**
* 冒泡排序
* @param array 传入的参数,排序前的数组
* @return 排序后的数组
*/
public int[] bubbleSort(int[] array) {
//用于交换数组元素顺序的变量
int tmp;
//共进行(数组长度 - 1)轮排序
for