JavaScript算法——冒泡排序

63 篇文章 1 订阅
订阅专栏
22 篇文章 0 订阅
订阅专栏

一、概念

冒泡排序(Bubble Sort)也叫气泡排序、泡沫排序,是一种比较简单的排序算法。
它通过遍历数组,比较相邻的两个元素,如果前一个元素比后一个元素大,则交换它们的位置,这样第一次遍历后数组的最大元素就排在了数组的末尾。采用相同的方法再次遍历,直至整个数组都有序为止。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端;这样,大的数就移动到了后端。

二、算法描述

比较相邻的元素。
如果第一个比第二个大,就交换它们两个;
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
针对所有的元素重复以上的步骤,除了最后一个;
重复步骤1~3,直到排序完成。

三、动图演示

在这里插入图片描述

四、复杂度

时间复杂度 :O(n^2)
空间复杂度 :O(1)
冒泡排序是一种稳定性排序。

五、代码实现

Array.prototype.bubbleSort = function(){
    for(let i = 0; i < this.length - 1; i++){
    	//j < length - 1 - i 内层循环只循环未排序的数组元素
        for(let j = 0; j < this.length - 1 - i; j++) {
            if(this[j] > this[j+1]){
            	//交换数组元素
                [this[j], this[j+1]] = [this[j+1], this[j]];
            }
        }
    }
} 
const arr = [6,5,4,3,2,1];
arr.bubbleSort(); 
console.log(arr);   

控制台输出:
在这里插入图片描述
冒泡排序过程
在这里插入图片描述

/函数写法/

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+1];        // 元素交换
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

参考文章:
JavaScript 实现 – 冒泡排序
JavaScript实现十大排序算法(附有更好理解的GIF动态图)

js实现冒泡排序
不想起床
06-27 7万+
冒泡排序原理: 冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比比较 白话就是:比如有6个数,你需要比较5趟,这......
javascript实现冒泡排序算法
jgffffvi的博客
04-21 1021
数据结构学习笔记 算法学习 前言 算法是机器运算的基础,它的作用相当于机器的发动机,学习算法能够增强我们的逻辑思维能力,提高我们编写程序的运行效率,本章学习算法中的冒泡排序, 提示:以下是本篇文章正文内容,下面案例可供参考 一、冒泡排序是什么? 冒泡排序是基础的排序算法之一,它的核心思想是相邻的元素两两比较,较大的数字下沉,较小的数字上升,一趟比较之后,较小的数字在前,较大的数字在后,过程如同气泡一样从小到大,故称为冒泡排序。 二、使用步骤 1比较相邻的元素,如果第一个比第二个大,就交换它们两个, 2 每
【Web前端】Javascript冒泡排序、选择排序、插入排序
最新发布
weixin_66216073的博客
04-28 330
前端Javascript冒泡排序、选择排序、插入排序
js冒泡排序的四种方法
wjw0125的博客
12-11 3131
更新个基础知识比较简单 仅供参考 //参考排序的数组 var arr = [3, 2, 5, 1, 4] 第一种 这种方法冒泡排序 比较相邻的两个元素,如果前一个比后一个大,则交换位置。 第一轮把最大的元素放到了最后面。 由于每次排序最后一个都是最大的,所以之后按照步骤1排序最后一个元素不用比 function arr_sort(data) { var temp for(var i = 0; i<data.length-1;i++) { for(var j = 0; j&lt.
冒泡排序算法
冰河家园的博客
03-21 457
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。  冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始
JavaScript 中的冒泡排序
weixin_50251467的博客
07-17 202
冒泡排序是一种简单的排序算法。它通过重复比较相邻元素并以错误的顺序交换它们来工作。重复的比较使最小/最大的元素冒泡到数组的末端,因此该算法被称为冒泡排序。尽管效率低下,但它仍然代表了排序算法的基础。
js中的冒泡排序
LQlove1的博客
05-19 1287
冒泡排序的简单原理
JS关于数组的冒泡排序算法
weixin_43664588的博客
02-25 1821
首先本人写下这篇博文纯粹是写给本人还未从复旦毕业的男朋友张XX看的,不喜勿喷 分以下几条讲解: 冒泡排序的目的: 把数组中的顺序杂乱的数组元素按照一定顺序排序,可以是从大到小,也可以是从小到大 为啥叫冒泡: 理解了这个经典排序算法,不难总结出,每个数组元素就像泡泡一样,冒出来,像吐泡泡一样与后面的数组元素进行比较,估摸着是这样,很形象生动这个名字。 冒泡思路: 首先两层循环,一个if单分支判断语句,还有一个经典的交换变量方法,借助temp;外层循环表示趟数,通过找规律可以总结出,长度为arr.length的
使用JavaScript实现的冒泡排序算法
07-26
使用JavaScript实现的冒泡排序算法
Javascript冒泡排序算法详解
10-25
主要介绍了Javascript冒泡排序算法的相关资料,需要的朋友可以参考下
JavaScript中的冒泡排序
10-21
主要介绍了JavaScript中的冒泡排序法的知识,并通过一个例子给大家讲解了js冒泡排序,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
JavaScript算法学习之冒泡排序和选择排序
12-13
前言 算法与数据结构构成了程序,数据结构用于实现数据的表示、存储、管理,算法通过使用数据完成一定的业务逻辑与操作,最终实现了程序的功能。因此算法在编程中的重要性...1、冒泡排序算法 冒泡算法顾名思义,可以将
javascript冒泡排序小结
10-22
冒泡排序由于比较简单和容易理解,往往会成为人们首先想到的排序算法。最基本的想法就是在一次里面比较两个数字,并且确保他们在移动到其他项目之前有一个正确的顺序。在每一关结束,有价值的“排序”到正确的位置,...
JavaScript——冒泡排序、选择排序
zg0601的博客
11-12 1389
JavaScript排序算法冒泡排序和选择排序
JavaScript 进阶第三章(数组排序-冒泡算法
m0_56344602的博客
08-27 215
算法algorithm,是一种解决问题的方法 算法的目标:使用最少的内存,最短的时间,解决最多的问题 冒泡算法: 重复地走访过要排序的元素列,依次比较两个相邻的元素 顺序正确:代表位置正确,不需要交换 顺序错误:交换两个元素,让顺序正确 <script> /* 冒泡算法(顺序:从小到大) 1.从第一个元素开始,比较下一个元素 * 如果前面一个大于后面的元素:交换 * 如果前面一个小于或..
js 实现冒泡排序
weixin_35749440的博客
01-06 446
冒泡排序是一种简单的排序算法。它的工作原理是通过对序列中的相邻元素进行多次比较和交换来将序列中的元素按照指定的顺序排列。 下面是一个 JavaScript 实现的冒泡排序函数: function bubbleSort(arr) { for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length - ...
JavaScript经典排序算法——冒泡排序
杜小白的博客
04-25 373
冒泡排序是一种简单的排序算法。它重复的走访要排序的数列,首先将第一个元素和第二个元素进行比较,若为逆序(Ri&gt;Rj),则将两个元素互换,然后比较第二个元素与第三个元素,以此类推,直到第n-1个元素和第n个元素进行比较为止。这一过程为第一趟冒泡排序,其结果使得最大的元素被安置在最后一个元素位置上。然后进行第二趟冒泡排序,对前n-1个元素进行同样操作,其结果是将次大的元素安置在第n-1个元素的位...
JavaScript实现十大经典排序算法--冒泡排序
Wendy
12-27 8380
冒泡排序可谓是最经典的排序算法了,它是基于比较的排序算法,时间复杂度为O(n^2),其优点是实现简单,n较小时性能较好。 1)算法原理        相邻的数据进行两两比较,小数放在前面,大数放在后面,这样一趟下来,最小的数就被排在了第一位,第二趟也是如此,如此类推,直到所有的数据排序完成。 2)算法描述        比较相邻的元素。如果第一个比第二个大,就交换它们两个;
JavaScript排序算法冒泡排序
YanHSama的博客
03-19 998
第一趟:第1个和第2个元素比较,随后第2个和第3个比较,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。第二趟:重复上面步骤,将第二大的数移动至倒数第二位。比较相邻的元素,如果前一个比后一个大,交换之。算法描述(从小到大排序)
JavaScript冒泡排序算法
05-11
好的,以下是JavaScript实现的冒泡排序算法: ```javascript function bubbleSort(arr) { let 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]) { // 交换相邻两个元素的位置 let temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; } // 测试 let arr = [64, 34, 25, 12, 22, 11, 90]; console.log(bubbleSort(arr)); // [ 11, 12, 22, 25, 34, 64, 90 ] ``` 以上代码使用嵌套的循环,外层循环控制排序轮数,内层循环控制每轮比较和交换。在每轮比较中,如果相邻两个元素的顺序不符合要求(如升序排序中前一个元素大于后一个元素),则交换它们的位置。最终得到排好序的数组。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Nprogress——页面加载的虚假进度条 39132
  • vue的render函数,你真的会用吗?单页面的render函数解坑 20200
  • JS获取系统语言、浏览器语言navigator.language和navigator.languages 19684
  • async 函数——JS中的异步处理方式 13792
  • ios系统微信浏览器、safari浏览器中h5页面上拉下滑导致悬浮层脱离窗口的解决方法 9255

分类专栏

  • rollup.js 1篇
  • vue3 1篇
  • 设计模式 9篇
  • JavaScript 63篇
  • gulp
  • webpack 9篇
  • vue.js 19篇
  • es6 22篇
  • html 4篇
  • css 7篇
  • jquery 1篇
  • angular
  • python 4篇
  • english 1篇
  • Books

最新评论

  • vue的render函数,你真的会用吗?单页面的render函数解坑

    W-Future: 该怎么从外部一个点击事件触发 render里组件的方法

  • Nprogress——页面加载的虚假进度条

    胡晓恒。: 如果是ts引入报错,可添加npm i --save-dev @types/nprogress

  • nvm中, vue不是内部或外部命令

    风剑苍月: 我按照你的方法试了,结果还是不行

  • nvm中, vue不是内部或外部命令

    一天531: 这个问题我刚刚遇到了。nvm安装完成后,原node安装的vue、webpack都失效。我认为是因为在未卸载原来的node的情况下,安装nvm管理已有的node,导致环境变量被更改,此时node、npm命令都还有效,但是vue等命令的环境变量位置也一起被改变,导致失效。我的解决方法是在环境变量中,将原来的NODE_PATH的值除了结尾"\node_global\node_modules"保留,前面部分替换为“%NVM_SYMLINK%”,这个替换部分可以在环境变量中看见指代的是原来node的地址;同时,在PATH变量中的“node_global"前面也加上”%NVM_SYMLINK%\“。

  • 跨域的chrome解决方式

    hvang1988: 文件不存在了,

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 关于下载上传的sheetjs
  • Vue3插件——一文讲透
  • uni-app简单的教程(一)
2024年1篇
2023年5篇
2022年10篇
2021年9篇
2020年27篇
2019年27篇
2018年8篇
2017年12篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳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 网站制作 网站优化