1.学习冒泡排序的排序思想,直接插入排序属于交换排序的一种,理解为什么冒泡排序算法是全局有序的。 2.利用冒泡排序算法解决排序问题,要求输入为排序表有10个元素,其关键字序列为(9,8,7,6,5,4,3,2,1,0),输出为关键字从小到大排序的序列。带注释
时间: 2024-10-14 17:14:21 浏览: 28
1. **冒泡排序**的基本思想是重复地遍历要排序的数列,比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。这个过程就像气泡一样从数组的一端慢慢“冒”到另一端。每次遍历都会把当前未排序部分的最大值或最小值“冒”到正确的位置。之所以称为“冒泡”,是因为较小的元素会像气泡一样逐层“浮”到顶端。
冒泡排序并不是一种全局有序的算法,但它确实会在每一轮遍历后将未排序部分的最大值或最小值放到合适的位置,所以经过n轮遍历后,整个数组就会被排序。由于它的特性,它在最好的情况下时间复杂度是O(n),当输入已经完全排序时。但最坏的情况(即逆序数组)下,时间复杂度是O(n^2)。
2. **利用冒泡排序解决问题**的示例代码(带有注释):
```java
public class BubbleSortExample {
public static void main(String[] args) {
// 定义一个包含给定键值的数组
int[] arr = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
// 冒泡排序算法
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; // 前一个放后面
}
}
}
// 输出排序后的数组
System.out.println("排序后的数组(从小到大):");
for (int num : arr) {
System.out.print(num + " ");
}
}
}
```
运行这段代码后,你会得到排序后从小到大的结果:`0 1 2 3 4 5 6 7 8 9`。这就是冒泡排序的过程。
阅读全文