数据结构和算法之冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就交换位置,直到没有再需要交换的元素。该算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
否 是 是 否 开始冒泡排序 是否还有未排序的元素 排序完毕 从头开始比较相邻元素 是否需要交换元素位置 交换元素位置 继续比较下一组相邻元素 继续比较下一组相邻元素 排序结果

根据上述表格,我们可以得到详细的冒泡排序过程的描述。具体过程如下:

数据组 5 3 8 6 4
第一次排序 3 5 6 4 8
第二次排序 3 5 4 6 8
第三次排序 3 4 5 6 8
第四次排序 3 4 5 6 8

以下是使用JavaScript实现冒泡排序的示例代码:

javascript 复制代码
function bubbleSort(arr) {
   var len = arr.length; // 获取数组长度

   for (var i = 0; i < len - 1; i++) { // 外层循环控制比较轮数
     for (var j = 0; j < len - 1 - i; j++) { // 内层循环控制每轮比较次数
       // 比较相邻两个元素,如果顺序错误就交换它们
       if (arr[j] > arr[j + 1]) { // 如果当前元素大于下一个元素
         var temp = arr[j]; // 临时变量用于存储当前元素
         arr[j] = arr[j + 1]; // 将当前元素替换为下一个元素
         arr[j + 1] = temp; // 将下一个元素替换为临时变量
       }
     }
   }
   return arr; // 返回排序后的数组
}

// 使用示例
var arr = [5, 3, 8, 4, 2];
console.log(bubbleSort(arr));  // 输出 [2, 3, 4, 5, 8]

在上述代码中,bubbleSort函数接收一个数组 arr 并进行冒泡排序。内部的两层循环用于比较和交换元素的位置,外层循环控制总共需要比较的轮次。经过多轮的比较和交换,最终得到一个升序的排列。

相关推荐
sali-tec24 分钟前
C# 基于OpenCv的视觉工作流-章66-直线夹角
图像处理·人工智能·opencv·算法·计算机视觉
AC赳赳老秦28 分钟前
接口测试自动化:用 OpenClaw 对接 Postman,实现批量回归测试、测试报告自动生成与推送
java·人工智能·python·算法·elasticsearch·deepseek·openclaw
_风满楼37 分钟前
TDD实战-会议室冲突检测的红绿重构循环
前端·javascript·算法
Rkgua42 分钟前
JS中的惰性函数基本介绍
前端·javascript
客场消音器1 小时前
我用两周半 Vibe Coding 做了一个前额叶训练的微信小程序
前端·javascript·后端
pq2171 小时前
java实现遗传算法
算法
木井巳2 小时前
【递归算法】单词搜索
java·算法·leetcode·决策树·深度优先
咚咚王者2 小时前
人工智能之RAG工程 第一章 RAG 基础与前置知识
人工智能·算法
handler012 小时前
【算法模板】最小生成树:稠密图选 Prim,稀疏图选 Kruskal
c语言·数据结构·c++·算法
Chase_______3 小时前
LeetCode 2461 & 1423:定长滑窗变体精讲,从 HashMap 判重到正难则反的转化技巧
算法·leetcode·职场和发展