欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 冒泡排序基础与实现

冒泡排序基础与实现

2025/9/25 10:50:32 来源:https://blog.csdn.net/qq_58195504/article/details/145102214  浏览:    关键词:冒泡排序基础与实现

目录

1. 原理图

​编辑

2. 什么是冒泡排序

3. 工作原理

3.1 具体步骤

3.2 时间复杂度

 3.3 空间复杂度

4. 代码实现

 5. 总结


1. 原理图

2. 什么是冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法,它通过重复地遍历要排序的列表,比较相邻元素并根据需要交换它们的位置来工作。这个过程会持续进行,直到整个列表变得有序为止。由于其简单性,冒泡排序常用于教学目的,但它并不是最高效的排序算法,特别是在处理大数据集时。

3. 工作原理

冒泡排序的基本思想是重复地访问要排序的列表,一次比较两个元素,如果它们的顺序错误就交换它们的位置。每次遍历后,最大的未排序元素会被移动到列表的末尾,就像气泡逐渐浮到水面上一样,因此得名“冒泡排序”。

3.1 具体步骤

(1) 比较相邻的元素。如果前一个比后一个大,则交换它们。

(2) 对每一对相邻元素做同样的工作,从开始的第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

(3) 针对所有的元素重复以上的步骤,除了最后一个。

(4) 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

3.2 时间复杂度

(1) 最坏情况:O(n²),当输入数组完全逆序时,每次遍历都需要进行 n-1 次比较和可能的交换。

(2) 最好情况:O(n),如果输入数组已经是排序好的,那么只需要一次遍历即可完成排序。

(3) 平均情况:O(n²),这是因为它依赖于数据的初始状态。

 3.3 空间复杂度

O(1),因为这是一个原地排序算法,不需要额外的空间来存储数据。

4. 代码实现

下面是用 JavaScript 实现的冒泡排序算法。这个实现不仅包含了基本的排序逻辑,还加入了一个优化:如果在某一轮遍历中没有发生任何交换,就认为数组已经有序,从而提前终止排序过程。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Bubble Sort Example</title>
</head>
<body><h1>JavaScript 冒泡排序示例</h1><button onclick="runBubbleSort()">运行冒泡排序</button><p id="result"></p><script>function bubbleSort(arr) {let n = arr.length;let swapped;for (let i = 0; i < n - 1; i++) {swapped = false;// 内层循环控制相邻元素之间的比较for (let j = 0; j < n - 1 - i; j++) {if (arr[j] > arr[j + 1]) {// 交换元素[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];swapped = true;}}// 如果没有发生交换,说明数组已经有序,可以提前退出if (!swapped) break;}return arr;}function runBubbleSort() {// 示例数组const exampleArray = [64, 34, 25, 12, 22, 11, 90];// 执行冒泡排序const sortedArray = bubbleSort([...exampleArray]); // 使用扩展运算符创建副本以保持原数组不变// 显示结果document.getElementById('result').textContent = `原始数组: ${exampleArray}\n排序后的数组: ${sortedArray}`;}</script>
</body>
</html>

 5. 总结

当用户点击“运行冒泡排序”按钮时,会调用 bubbleSort 函数,执行冒泡排序,并将排序前后的数组显示在页面上的 <p> 元素内。以上就是所有内容。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词