内容来自《Offer来了》
冒泡排序(Bubble Sort)算法是一种较简单的排序算法,它在重复访问要排序的元素列时,会依次比较相邻的两个元素,如果左边的元素大于右边的元素,就将二者交换位置,如此重复,直到没有相邻的元素需要交换位置,这时该列表的元素排序完成。
该算法名称的由来是越大的元素会经过交换慢慢“浮”到数列的顶端(升序或降序排列),就如同水的气泡最终会上浮到顶端一样。
如图5-2所示为对数组[4,5,6,3,2,1]进行冒泡排序,每次都将当前数据和下一个数据进行比较,如果当前数据比下一个数据大,就将二者交换位置,否则不做任何处理。这样经过第1趟排序就会找出最大值6并将其放置在最后一位,经过第2趟排序就会找出次大的数据5放在倒数第二位,如此重复,直到所有数据都排序完成。
冒泡排序算法的Java实现如下:
public static int[] bubbleSort(int[] arr) {
//外层循环控制排序趟数
for (int i = 0; i < arr.length - 1; i++) {
//内层循环控制每一趟排序多少次
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
以上代码实现了一个名为bubbleSort()的冒泡排序算法,分为外层循环和内层循环,外层循环控制排序的次数,内层循环控制每一趟排序多少次。在内层循环中比较当前数据和下一个数据的大小,如果当前数据大于下一个数据,就交换二者的位置,这样重复进行判断,直至整个排序完成,最终返回排序后的数组。