备案 控制台
开发者社区 开发与运维 文章 正文

javascript算法排序之冒泡排序

简介: javascript算法排序之冒泡排序

前言

经典的排序算法,很多人都听过,很多人也许用过,但是也有很多人,听过没见过。为什么呢?现在我们有了越来越多的框架、依赖包,我们将能用到排序的实际场景,作为业务将其封装成了函数,所以,一些人只知函数而不知其运行逻辑。

基于以上,为了让自己更好的理解函数运行逻辑,整理了一些基本排序的方法的运行规则,以及部分个人理解,希望能给大家一些帮助。

冒泡排序

冒泡排序是基础的排序算法之一,它的核心思想是相邻的元素两两比较,较大的数字下沉,较小的数字上升,一趟比较之后,较小的数字在前,较大的数字在后,过程如同气泡一样从小到大,故称为冒泡排序。

冒泡排序原理

  • 遍历要排序,依次比较两个相邻的元素;
  • 顺序正确:代表位置正确,不需要交换;
  • 顺序错误:交换两个元素,让顺序正确;

每一趟只能确定将一个数放到正确的排序上。即第一趟只能确定将末位上的数归位,第二趟只能将倒数第 2 位上的数归位,依次类推下去。如果有 n 个数进行排序,只需将 n-1 个数归位,也就是要进行 n-1 趟操作。

设数组长度为n,遍历索引为i且从0开始,
由于每次遍历会将当前最大值放置到n - 1 - i的位置,即每次遍历之后的[ n-1-i,n-1]区间的元素为正序排列,[0,n-1-i]是无序排列的;

而 “每一趟 ” 都需要从第一位开始进行相邻的两个数的比较,将较大的数放后面,比较完毕之后向后挪一位继续比较下面两个相邻的两个数大小关系,重复此步骤,直到最后一个还没归位的数。

代码

function bubbleSort(array) {
   
   
    let length = array.length;
    //遍历数组所有元素
    for (let i = 0; i < length - 1; i++) {
   
   
        //遍历未排序数组,即[0,length-1-i]的区间
        for (let j = 0; j < length - 1 - i; j++) {
   
   
            //两个挨着的元素进行比较,如果前一个比后一个大,则位置交换
            if (array[j] > array[j + 1]) {
   
   
                let item = array[j];
                array[j] = array[j + 1];
                array[j + 1] = item;
            }
        }
    }
    console.log("bubbleSort result:", array);
}


bubbleSort([1, 2, 3, 10, 9, 17, 6, 5, 7]);

复杂度

时间复杂度:O(n^2);
空间复杂度:O(1);

寄语

以上即为冒泡排序的工作流程,希望能给大家一些启发!

不是所有的深究都是有意义的,但是你想深究的话,它一定是有意义的

乾复道
目录
相关文章
阿旭算法与机器学习
|
3天前
|
算法
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
阿旭算法与机器学习
6 1
阿旭算法与机器学习
|
3天前
|
算法
【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值
【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值
阿旭算法与机器学习
7 0
誓则盟约
|
5天前
|
算法 搜索推荐
数据结构与算法-冒泡排序
数据结构与算法-冒泡排序
誓则盟约
9 2
数据分析螺丝钉
|
6天前
|
算法 搜索推荐 数据可视化
【漫画算法】指挥官的排序战术:快速排序算法解密
【漫画算法】指挥官的排序战术:快速排序算法解密
数据分析螺丝钉
4 0
数据分析螺丝钉
|
6天前
|
数据采集 算法 数据挖掘
LeetCode 题目 80:删除排序数组中的重复项 II【算法面试高频题】
LeetCode 题目 80:删除排序数组中的重复项 II【算法面试高频题】
数据分析螺丝钉
7 0
sky_qiyi
|
9天前
|
算法 搜索推荐 Java
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
sky_qiyi
9 0
sky_qiyi
|
10天前
|
搜索推荐 算法 Shell
数据结构和算法——排序算法的比较和排序综测测验
数据结构和算法——排序算法的比较和排序综测测验
sky_qiyi
6 0
sky_qiyi
|
10天前
|
算法 C语言
数据结构和算法——桶排序和基数排序(图示、伪代码、多关键字排序,基数排序代码)
数据结构和算法——桶排序和基数排序(图示、伪代码、多关键字排序,基数排序代码)
sky_qiyi
9 0
sky_qiyi
|
10天前
|
算法 搜索推荐
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
sky_qiyi
11 0
sky_qiyi
|
10天前
|
人工智能 算法 C语言
数据结构与算法——简单排序-冒泡排序、插入排序,时间复杂度下界(图示、代码、时间复杂度、定理)
数据结构与算法——简单排序-冒泡排序、插入排序,时间复杂度下界(图示、代码、时间复杂度、定理)
sky_qiyi
8 0

热门文章

最新文章

  • 1
    [IE&FireFox]JS兼容
  • 2
    JavaScript---网络编程(4)-Date、Math、Global和自定义对象
  • 3
    js验证图片格式
  • 4
    Bpmn.js 中文文档 之 Overlays
  • 5
    利用JS输出正三角形五角星
  • 6
    整理发布html的select控件实用js操作
  • 7
    禁用JavaScript控制台调试
  • 8
    HTML5使用 JavaScript File API 实现文件上传
  • 9
    JavaScript prototype
  • 10
    怎样把网站js文件合并成一个?几种方法可以实现
  • 1
    视觉智能平台常见问题之其他算法定制化开发如何解决
    89
  • 2
    使用Python实现图像处理中的边缘检测算法
    110
  • 3
    利用机器学习算法改善电商推荐系统的效率
    120
  • 4
    Python基础算法解析:K最近邻算法
    43
  • 5
    【数据结构与算法】—— 手撕红黑树
    50
  • 6
    【优选算法】—— 字符串匹配算法
    58
  • 7
    【优选算法】—— 滑动窗口类问题
    57
  • 8
    【算法】——全排列算法讲解
    54
  • 9
    【排序算法】数据结构排序详解
    58
  • 10
    数据结构——排序算法之快速排序
    39
  • 相关课程

    更多
  • 相册服务中的故事生成算法介绍
  • Go语言核心编程 - 数据结构和算法
  • JavaScript入门与实战
  • JavaScript 自学手册文档教程
  • 神经网络概览及算法详解
  • 相关电子书

    更多
  • JavaScript函数
  • Delivering Javascript to World
  • 编程语言如何演化-以JS的private为例
  • 相关实验场景

    更多
  • 使用Swing算法实现商品推荐
  • Html5和Webpack2:Webpack5打包JS和样式表
  • TLS1.3的后量子算法集成
  • RSA密码算法设计与实现
  • RSA非对称加密算法
  • 欧拉图的构造性证明与算法实现
  • 下一篇
    2024年阿里云免费云服务器及学生云服务器申请教程参考

    深圳SEO优化公司阳江模板网站建设报价贺州建设网站推荐大连seo网站优化多少钱芜湖网络推广哪家好蚌埠企业网站制作报价广安优化哪家好长沙百度seo公司抚顺优秀网站设计价格镇江网站建设设计多少钱盐城百度竞价包年推广多少钱潮州高端网站设计报价景德镇优化公司郑州SEO按天计费价格柳州SEO按效果付费推荐大浪seo网站优化多少钱鸡西优化多少钱河池企业网站制作哪家好桂林网站制作设计价格陇南建网站公司果洛企业网站设计厦门网站制作设计多少钱吉林关键词按天计费推荐毕节seo网站优化推荐昌吉网站推广系统推荐陇南seo网站推广推荐无锡英文网站建设报价喀什设计公司网站公司榆林seo排名推荐桂林网站开发哪家好德宏外贸网站建设哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化