js冒泡排序法

冒泡排序法

冒泡排序法其实也是一种最简单,最清晰明了的一种排序算法。主要的运行过程就是重复比较一个数组里面的所有元素,两两做比较,如果他们的顺序不对,则把他们交换位置,一直重复到没有再需要交换元素就结束循环。之所以叫做冒泡,是因为最小的元素会在经过这些排序后慢慢的冒泡到数组的第一个位置,所以称之为冒泡排序法。

下面我们通过对一个数组使用冒泡排序法排序并输入来学习一下冒泡排序法的具体运行过程:

var arr = [10,50,98,2,40];for(let i = 0; i < arr.length;i++){//外循环for(let j = i+1; j < arr.length; j++){//内循环if(arr[i] > arr[j]){let temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}
}
console.log('排序后的数组顺序为:',arr);

 由以上代码我们可以看出,数组的元素本来的顺序是乱的,经过我们使用冒泡排序法再输出数组后,数组中的元素已按照由小到大排序好。

我们来详细看一下冒泡排序法的运行过程:

我们要先了解嵌套循环,也就是说外层循环循环一次,内层循环则需要根据内层循环的条件循环结束才会再次跳回外层循环进行外层循环的下一次循环,从我们的代码可以看出:

        使用外层循环遍历数组的下标,数组的下标从0开始,到数组元素的个数-1结束,所以这里外循环的“i”需要小于我们数组元素的个数。然后是内层循环,这里的“j = i+1”的原因是第一个数组元素它本身不需要再和自己比较一次,所以就在“i”的基础仧加1,从第二个元素进行比较,当然内层循环条件也是要小于数组的长度的。然后进入循环开始判断:

第一次比较数组的第1个元素“10”和数组的第2个元素“50”,第三个元素“98”,第4个元素“2”,第5个元素“40”进行依次比较,定义一个临时变量temp用来存储数据,第一次,10和50比较,10不大于50,所以不仅如此if中的语句,继续10与98比较,if还是不满足,继续10与2比较,则将2和10交换位置,然后再用10和40比较,还是不满足if条件,第一次比较后的数组元素的顺序为[2,50,98,10,40]

这样内层循环结束,跳到外层循环,i++后i变成1,则拿到的元素是50,然后50开始与98比较,不满足if,50再与10比较,满足,则50和10交换位置,然后50和40比较,也满足条件,则50和40再交换位置,第二次比较后的数组元素顺序为[2,10,98,40,50];内层循环结束,继续下一次外层循环

i++变成2,则拿到元素是98,98与40比较满足条件,则98与40交换位置,然后98与50比较,也满足条件,98再与50交换位置,这次循环结束后数组元素的顺序为[2,10,40,50,98];

其实这里我们的数组元素顺序已经排好了,但是由于循环还没有结束,所以外层循环还会再继续执行2次之后才会停止,但进入循环后,数组的元素已经都不再满足if条件,因为顺序已经排好了。

等到循环结束,我们输出排序后的数组即可。这就是冒泡排序法的执行过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/351674.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

冒泡排序法(C语言)

冒泡排序&#xff1a;相邻两个数两两比较&#xff0c;小的数向前移&#xff08;上浮&#xff09;&#xff0c;大的数向后移&#xff08;下沉&#xff09;&#xff0c;如同水中的泡泡上浮一般&#xff1b; 冒泡排序图示&#xff1a; 如果有N个数&#xff0c;则要跑N-1次比较&…

Word控件Spire.Doc 【其他】教程(6):从 Word 中提取 OLE 对象

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

力扣刷题笔记——动态规划

动态规划基础 简称DP&#xff0c;如果某⼀问题有很多重叠⼦问题&#xff0c;使⽤动态规划是最有效的。 动态规划中每⼀个状态⼀定是由上⼀个状态推导出来的 1. 确定dp 数组&#xff08; dp table &#xff09;以及下标的含义 2. 确定递推公式 3. dp 数组如何初始化 4. 确定遍…

【Java系列】MyBatis-Plus常见面试题

问题列表 Q1&#xff1a;MyBatis-Plus是什么&#xff1f;它有什么优点&#xff1f; MyBatis-Plus是MyBatis框架的一个扩展库&#xff0c;它提供了一系列方便的API和工具&#xff0c;可以简化常见的数据库操作。MyBatis-Plus的优点包括&#xff1a; 提高开发效率&#xff1a;My…

MQTT与EMQ

文章目录 1 MQTT协议与EMQ中间件1.1 物联网消息协议MQTT1.1.1 什么是MQTT1.1.2 MQTT相关概念1.1.3 消息服务质量QoS——信息的可靠投递1.1.3.1 QoS0——消息服务质量为0&#xff0c;消息发送至多一次1.1.3.2 QoS1——消息发送至少一次1.1.3.3 QoS2——消息发送仅一次1.1.3.4 不…

MTK平台的SWT异常的简单总结(2)——SWT原理和分析

&#xff08;1&#xff09;原理性 &#xff08;2&#xff09;SWT如何抓取Log 遇到SWT问题详细可参考MTK提供的FAQ&#xff1a;SWT机制介绍。 获取Ap Log的路径&#xff1a;/sdcard/debuglogger/mobilelog/APLog_XXXXX 获取db的路径&#xff1a;/data/aee_exp 如果db没有打包…

HBase统计表行数(RowCount)的四种方法

背景&#xff1a; 对于其他数据存储系统来说&#xff0c;统计表的行数是再基本不过的操作了&#xff0c;一般实现都非常简单&#xff1b;但对于HBase这种key-value存储结构的列式数据库&#xff0c;统计 RowCount 的方法却有好几种不同的花样&#xff0c;并且执行效率差别巨大&…

2023年测试人前景归途?我主攻自动化测试拿到了25k的offer...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…

sqlserver 中 @@rowcount的简单用法

返回受上一语句影响的行数。如果行数大于 20 亿&#xff0c;请使用 ROWCOUNT_BIG。 语法 ROWCOUNT 返回类型 int 注释 Transact-SQL 语句可以通过下列方式设置 ROWCOUNT 的值&#xff1a; 将 ROWCOUNT 设置为 受影响或被读取的行的数目。可以将行发送到客户端&#xff0c;…

SQL中row_number函数用法

row_number函数用法 1、函数讲解2、LeetCode实战 1、函数讲解 语法&#xff1a;ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)简单的说&#xff0c;row_number()从1开始&#xff0c;为每条分组记录返回一个数字&#xff0c;举例&#xff1a; ROW_NUMBER() OVER(OR…

Hbase进行RowCount统计

对于Table内RowKey个数的统计&#xff0c;一直是HBase系统面临的一项重要工作&#xff0c;目前有三种执行该操作的方式。 测试环境&#xff1a; Apache版的 hadoop-2.6.0 &#xff08;cdh版的hadoop-2.6.0-cdh5.5.2也可以&#xff09; Apache版的 hbase-1.0.0 &#xff08;一…

【完整版】2023二级建造师《建筑实务》真题答案解析(2天考3科)

2023二级建造师考试将在6月3日、4日举行&#xff0c;2023二建《市政实务》考试时间&#xff08;2天考3科&#xff09;&#xff1a;6月4日 9:00-12:00&#xff0c; 考后甘建二将及时发布2023年二建市政实务真题及答案解析&#xff0c;敬请关注 2天考3科地区&#xff1a;四川、山…

DMBOK知识梳理for CDGA/CDGP——第三章数据治理

关 注gzh“大数据食铁兽” 回复“知识点”获取《DMBOK知识梳理for CDGA/CDGP》常考知识点&#xff08;第三章数据治理&#xff09; 第三章 数据治理 第三章在是CDGA|CDGP考试的重点考核章节之一&#xff0c;知识点比较密集&#xff0c;本章重点为语境关系图及数据治理概念…

LiangGaRy-学习笔记-Day19

1、回顾知识 1.1、文件系统说明 xfs与ext4文件系统 CentOS7以上&#xff1a;默认的就是XFS文件系统 xfs 使用的就是restore、dump等工具 CentOS6默认的就是ext4文件系统 extundelete工具就是用于ext4系统 1.2、回顾Linux文件系统 Linux文件系统是由三个部分组成 inode文…

一文学会MySQL四种安装方式

目录 &#x1f341;rpm方式安装 &#x1f340;下载软件包 &#x1f340;前置配置 &#x1f340;安装MySQL &#x1f341;yum方式安装 &#x1f340;下载软件包 &#x1f340;安装MySQL &#x1f341;二进制方式安装 &#x1f340;下载软件包 &#x1f340;安装MySQL &#x1f3…

2023最新网络安全面试题大全,看完这篇你的秋招offer就到手了!

前言 随着国家政策的扶持&#xff0c;网络安全行业也越来越为大众所熟知&#xff0c;想要进入到网络安全行业的人也越来越多。 为了拿到心仪的 Offer 之外&#xff0c;除了学好网络安全知识以外&#xff0c;还要应对好企业的面试。 作为一个安全老鸟&#xff0c;工作这么多年…

【自定义CPU占用率】

题目&#xff1a;写一个程序&#xff0c;让用户来决定Windows任务管理器&#xff08;Task Manager&#xff09;的CPU占用率。程序越精简越好&#xff0c;计算机语言不限。例如&#xff0c;可以实现下面三种情况&#xff1a; 1. CPU的占用率固定在50%&#xff0c;为一条直线&…

控制cpu占有率

http://www.cnblogs.com/Ripper-Y/archive/2012/05/19/2508511.html CPU正弦曲线 1 #include <iostream>2 #include <cmath>3 #include <ctime>4 #include <windows.h>5 6 using namespace std;7 8 //得到循环0xFFFFFFFF次用的秒数9 unsigned int te…

CPU正弦曲线

CPU正弦曲线 1 #include <iostream>2 #include <cmath>3 #include <ctime>4 #include <windows.h>5 6 using namespace std;7 8 //得到循环0xFFFFFFFF次用的秒数9 unsigned int test() 10 { 11 unsigned int c 0xFFFFFFFF; 12 13 time_t t1…

(1.5.1.1)编程之美:让CPU占用率曲线听你指挥

题目&#xff1a;写一个程序&#xff0c;让用户来决定Windows任务管理器&#xff08;Task Manager&#xff09;的CPU占用率。程序越精简越好&#xff0c;计算机语言不限。例如&#xff0c;可以实现下面三种情况&#xff1a; 1. CPU的占用率固定在50%&#xff0c;为一条直线&…