编写Java代码实现冒泡排序 ?
参考答案:
下面是一个Java实现的冒泡排序算法示例:
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
bubbleSort(arr);
for (int num : arr) {
System.out.print(num + " ");
}
}
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换 arr[j] 和 arr[j+1]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
在这段代码中,我们定义了一个bubbleSort
方法来实现冒泡排序。该方法接收一个整数数组arr
作为参数,并通过两个嵌套的for循环来比较和交换元素的位置。
外层循环i
控制遍历的轮数,内层循环j
负责在每一轮中进行相邻元素的比较和交换。通过比较arr[j]
和arr[j + 1]
的大小,如果arr[j]
比arr[j + 1]
大,则交换这两个元素的位置。
在每次内层循环结束后,当前未排序部分的最大值(在这个例子中假设是升序排序)会被“冒泡”到正确的位置(即数组的末尾)。随着外层循环的继续,未排序部分的长度逐渐减少,直到整个数组排序完成。
最后,在main
方法中,我们创建了一个待排序的数组arr
,调用bubbleSort
方法进行排序,然后遍历并打印排序后的数组。
注意:冒泡排序的时间复杂度在最坏和平均情况下都是O(n^2),其中n是数组的长度。虽然实现简单,但在处理大规模数据时效率较低。在实际应用中,如果数据规模较大,通常推荐使用更高效的排序算法。