当需要对一个数组(或者列表)进行排序时,冒泡排序是最基本的一种排序算法之一。下面详细讲解Java实现冒泡排序算法的完整攻略。
定义
“冒泡排序”指的是通过不断地比较相邻的元素,并交换不合适的元素位置,从而逐步将无序的元素移动到正确的位置。它的过程像气泡不断从水中升起,因此得名“冒泡排序”。
实现
下面是Java实现冒泡排序的示例代码:
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n; i++) {
boolean swapped = false;
for (int j = 1; j < n - i; j++) {
if (arr[j - 1] > arr[j]) {
// 交换相邻两个元素的位置
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
swapped = true;
}
}
// 如果一趟扫描中没有元素交换位置,则说明排序已完成
if (!swapped) {
break;
}
}
}
在冒泡排序的实现中,我们使用了两次循环遍历整个数组。外部循环用于记录已经排好序的元素个数,内部循环用于比较相邻的元素并将其交换位置。
在内部循环中,我们使用了一个布尔变量 swapped
用来记录是否有元素交换位置,如果没有,说明当前这一趟扫描中已经没有需要排序的元素了。这时我们直接退出外部循环即可,提高了算法的效率。
示例
下面,我们通过两个示例来具体说明冒泡排序算法的实现细节。
示例1
假如我们要将数组 [5, 3, 6, 2, 1, 9, 4]
进行升序排序,那么它的排序过程如下所示:
- 第一趟扫描:
[3, 5, 2, 1, 6, 4, 9]
,其中3
和5
这两个元素已经排好序了。 - 第二趟扫描:
[3, 2, 1, 5, 4, 6, 9]
,其中5
和6
这两个元素已经排好序了。 - 第三趟扫描:
[2, 1, 3, 4, 5, 6, 9]
,其中3
和4
这两个元素已经排好序了。 - 第四趟扫描:
[1, 2, 3, 4, 5, 6, 9]
,排序完成。
最终排序后的数组为 [1, 2, 3, 4, 5, 6, 9]
。
示例2
假如我们要将数组 [5, 1, 3, 2, 4]
进行升序排序,那么它的排序过程如下所示:
- 第一趟扫描:
[1, 3, 2, 4, 5]
,其中1
和5
这两个元素已经排好序了。 - 第二趟扫描:
[1, 2, 3, 4, 5]
,排序完成。
最终排序后的数组为 [1, 2, 3, 4, 5]
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现冒泡排序算法 - Python技术站