请介绍一下冒泡排序并举例
时间: 2023-07-21 17:36:20 浏览: 73
冒泡排序的大致流程: 依次 比较 相邻的两个数,正序则不动,倒序则交换位置,如此循环,直到整个数组为有序为止 以下列数据为
冒泡排序是一种简单的排序算法,它的基本思想是比较相邻两个元素的大小关系,如果它们的顺序错误就交换它们的位置,一直重复这个过程,直到所有元素都按照从小到大(或从大到小)的顺序排列。
下面是一个冒泡排序的 JavaScript 实现:
```javascript
function bubbleSort(arr) {
const n = arr.length;
for (let i = 0; i < n - 1; i++) {
for (let j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换相邻两个元素的位置
const temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
```
例如,对于数组 `[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]` 进行冒泡排序,它的排序过程如下:
1. 第1次排序:比较 `[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]` 中相邻两个元素,发现 3 和 1 的顺序错误,交换它们的位置,得到 `[1, 3, 4, 1, 5, 9, 2, 6, 5, 3, 5]`;
2. 第2次排序:比较 `[1, 3, 4, 1, 5, 9, 2, 6, 5, 3, 5]` 中相邻两个元素,发现 3 和 4 的顺序正确,不需要交换,得到 `[1, 3, 4, 1, 5, 9, 2, 6, 5, 3, 5]`;
3. 第3次排序:比较 `[1, 3, 4, 1, 5, 9, 2, 6, 5, 3, 5]` 中相邻两个元素,发现 4 和 1 的顺序错误,交换它们的位置,得到 `[1, 3, 1, 4, 5, 9, 2, 6, 5, 3, 5]`;
4. 第4次排序:比较 `[1, 3, 1, 4, 5, 9, 2, 6, 5, 3, 5]` 中相邻两个元素,发现 3 和 4 的顺序正确,不需要交换,得到 `[1, 3, 1, 4, 5, 9, 2, 6, 5, 3, 5]`;
5. 第5次排序:比较 `[1, 3, 1, 4, 5, 9, 2, 6, 5, 3, 5]` 中相邻两个元素,发现 4 和 5 的顺序正确,不需要交换,得到 `[1, 3, 1, 4, 5, 9, 2, 6, 5, 3, 5]`;
6. 第6次排序:比较 `[1, 3, 1, 4, 5, 9, 2, 6, 5, 3, 5]` 中相邻两个元素,发现 9 和 2 的顺序错误,交换它们的位置,得到 `[1, 3, 1, 4, 5, 2, 9, 6, 5, 3, 5]`;
7. 第7次排序:比较 `[1, 3, 1, 4, 5, 2, 9, 6, 5, 3, 5]` 中相邻两个元素,发现 9 和 6 的顺序错误,交换它们的位置,得到 `[1, 3, 1, 4, 5, 2, 6, 9, 5, 3, 5]`;
8. 第8次排序:比较 `[1, 3, 1, 4, 5, 2, 6, 9, 5, 3, 5]` 中相邻两个元素,发现 9 和 5 的顺序错误,交换它们的位置,得到 `[1, 3, 1, 4, 5, 2, 6, 5, 9, 3, 5]`;
9. 第9次排序:比较 `[1, 3, 1, 4, 5, 2, 6, 5, 9, 3, 5]` 中相邻两个元素,发现 9 和 3 的顺序错误,交换它们的位置,得到 `[1, 3, 1, 4, 5, 2, 6, 5, 3, 9, 5]`;
10. 第10次排序:比较 `[1, 3, 1, 4, 5, 2, 6, 5, 3, 9, 5]` 中相邻两个元素,发现 9 和 5 的顺序错误,交换它们的位置,得到 `[1, 3, 1, 4, 5, 2, 6, 5, 3, 5, 9]`。
最终得到的有序数组为 `[1, 1, 2, 3, 3, 4, 5, 5, 6, 9, 5]`。
阅读全文