基于javaScript的冒泡排序

目录

一.前言

二.设计思路和原理

三.源代码展示

四. 案例运行结果


一.前言

        冒泡排序简而言之,就是一种算法,能够把一系列的数据按照一定的顺序进行排列显示(从小到大或从大到小)。例如能够将数组[5,4,3,2,1]中的元素按照从小到大的顺序进行排序,输出:1,2,3,4,5

        这个算法的名字由来也是因为越小的元素会经由交换慢慢‘浮’到数列的顶端。

二.设计思路和原理

        我们以一个简单的数组[5,4,3,2,1]为例,对它执行冒泡排序的过程进行分析。首先我们用数组的第一个元素5来与其他数组元素进行比较,只需比较四次,元素5就到了数组的最后一位。同样的由于5已经和其他元素都比较完了,就是该数组中最大的,因此其他元素就不需要跟它再次进行比较了。所以数组元素4进行比较的时候,就可以少比较一次了,也就是比较三次。同样的道理,数组元素3需要比较两次,数组元素2需要比较一次。而到数组元素1的时候,由于已经到最左边了,也就是最小的数字了,因此也不要再进行比较了。

        通过以上分析,我们可以发现比较次数最多的那次就是四次,比较的趟数也是四次。而我们的数组长度为5,也就是说比较趟数为数组的长度减一。而且可以看出,每比较一次,比较的次数就会少一次。因此我们可以用外层循环来控制比较的趟数,用里层for循环来控制每一趟比较的次数,最后再对需要交换位置的两个元素进行位置互换,也就是用到temp这个中间变量来完成。

三.源代码展示

        如下所示,我们设置里层循环的j<arr.length-1-i由于索引号从0开始,因此我们得arr.length-1,再对arr.length-1-i就可以达到每比较一次,比较的次数减一的效果。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script>  
    var arr=[3,4,5,1,2,78,77,6]
    for(var i=0;i<arr.length-1;i++){
      for(var j=0;j<arr.length-i-1;j++){
        if(arr[j]<arr[j+1]){
          temp=arr[j]
          arr[j]=arr[j+1]
          arr[j+1]=temp
        }
      }
    }
    console.log(arr)
  </script>
</head>
<body>
  
</body>
</html>
四. 案例运行结果

        

由于我们得源代码是执行从大到小的排序,所以我们在对原数组进行排序之后的结果就如上图所示。如果我们想要得到从小到大的排序,只需要更改源代码的第11行内容为arr[j]>arr[j+1] 即可。

         

 

 

 

 

        

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用数字孪生实现电池管理系统 (BMS) 测试自动化

电池管理系统 (BMS) 监控和控制电动飞机和电动汽车等车辆中的电池。它需要在正常和极端条件下进行严格测试&#xff0c;以证明其质量和完整性。 使用模拟电池进行测试非常有益&#xff0c;因为可以快速、反复地安全地测试各种条件&#xff0c;而不会冒着宝贵硬件的风险。这种硬…

Hash表(C++)

本篇将会开始介绍有关于 unordered_map 和 unordered_set 的底层原理&#xff0c;其中底层实现其实就是我们的 Hash 表&#xff0c;本篇将会讲解两种 Hash 表&#xff0c;其中一种为开放定址法&#xff0c;另一种为 hash 桶&#xff0c;在unordered_map 和 unordered_set 的底层…

6、evil box one

低—>中 目标&#xff1a;获取root权限以及2个flag 主机发现 靶机 192.168.1100.40 或者使用fping -gaq 192.168.100.1/24发现主机使用ping的方式。 端口扫描 发现开放了22和80 可以使用-A参数&#xff0c;-A参数会得到更多的扫描细节 访问80端口就是一个apache的基本的…

Redis 7.x 系列【23】哨兵模式

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 工作原理2.1 监控2.2 标记下线2.3 哨兵领袖2.4 新的主节点2.5 通知更新 3. …

JMeter案例分享:通过数据验证的错误,说说CSV数据文件设置中的线程共享模式

前言 用过JMeter参数化的小伙伴&#xff0c;想必对CSV Data Set Config非常熟悉。大家平时更关注变量名称&#xff0c;是否忽略首行等参数&#xff0c;其余的一般都使用默认值。然而我最近遇到一个未按照我的预想读取数据的案例&#xff0c;原因就出在最后一个参数“线程共享模…

服务重启时容器未自动启动

1、容器重启策略 通过设置容器的重启策略&#xff0c;‌可以决定在容器退出时Docker守护进程是否重启该容器。‌常见的重启策略包括&#xff1a;‌ no&#xff1a;‌不重启容器&#xff0c;‌默认策略。‌always&#xff1a;‌无论容器是如何退出的&#xff0c;‌总是重启容器…

keil配置irom偏移地址进行IAP,偏移地址不生效问题解决

如果keil配置了 IROM1 偏移地址&#xff0c;但是生成的hex&#xff0c;程序并没有偏移&#xff0c;问题多半是出现在linker里如下图所示。选择了分散加载&#xff0c;所以keil配置地址偏移不生效。 点开edit 更改分散加载的地址偏移即可。 偏移成功&#xff0c;可以IAP了。

算法学习笔记(8.5)-零钱兑换问题二

目录 Question&#xff1a; 动态规划思路&#xff1a; 代码实现&#xff1a; 空间优化代码 Question&#xff1a; 给定n种硬币&#xff0c;第i种硬币的面值为coins[i-1],目标金额为amt&#xff0c;每种硬币可以重复选取&#xff0c;问凑出目标金额的硬币组合数量。 动态规划思路…

Java 线程池详解

序言 在高并发编程中&#xff0c;线程池是一个非常重要的组件。它不仅能够有效地管理和复用线程资源&#xff0c;还可以提升应用程序的性能和稳定性。本文将详细介绍Java中的线程池机制&#xff0c;以及如何正确地使用线程池。 一、什么是线程池 线程池是一组已经初始化并等…

ftp pool 功能分析及 golang 实现

本文探究一种轻量级的 pool 实现 ftp 连接。 一、背景 简要介绍&#xff1a;业务中一般使用较多的是各种开源组件&#xff0c;设计有点重&#xff0c;因此本文探究一种轻量级的 pool 池的思想实现。 期望&#xff1a;设置连接池最大连接数为 N 时&#xff0c;批量执行 M 个 F…

超时导致SparkContext构造失败的问题探究

文章目录 1.前言2. 基于事故现场对问题进行分析2.1 日志分析2.2 单独测试Topology代码试图重现问题 3. 源码解析3.1 Client模式和Cluster模式下客户端的提交和启动过程客户端提交时在两种模式下的处理逻辑ApplicationMaster启动时在两种模式下的处理逻辑 3.2 两种模式下的下层角…

OSPF.综合实验

1、首先将各个网段基于172.16.0.0 16 进行划分 1.1、划分为4个大区域 172.16.0.0 18 172.16.64.0 18 172.16.128.0 18 172.16.192.0 18 四个网段 划分R4 划分area2 划分area3 划分area1 2、进行IP配置 如图使用配置指令进行配置 ip address x.x.x.x /x 并且将缺省路由…

uniapp编译成h5后接口请求参数变成[object object]

问题&#xff1a;uniapp编译成h5后接口请求参数变成[object object] 但是运行在开发者工具上没有一点问题 排查&#xff1a; 1&#xff1a;请求参数&#xff1a;看是否是在请求前就已经变成了[object object]了 结果&#xff1a; 一切正常 2&#xff1a;请求头&#xff1a;看…

2024辽宁省数学建模C题【改性生物碳对水中洛克沙胂和砷离子的吸附】原创论文分享

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024 年辽宁省大学数学建模竞赛C题改性生物碳对水中洛克沙胂和砷离子的吸附完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃…

OpenGL笔记九之彩色三角形与重心插值算法

OpenGL笔记九之彩色三角形与重心插值算法 —— 2024-07-07 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记九之彩色三角形与重心插值算法1.运行3.main.cpp 1.运行 3.main.cpp 代码 #include <iostream>#define DEBUG//注意&#xff1a;glad…

虚拟机centos连接xshell

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…

VsCode远程ssh连接失败:Could not establish connection to XXX

一、问题描述 在VsCode中按下"F1"&#xff0c;选择Remote-SSH:Connect to Host 选择一个已经配置好的SSH主机&#xff0c;比如我选择的是192.168.0.104&#xff1a; 结果提示&#xff1a;Could not establish connection to XXX 二、解决方法 观察VsCode的输出信息…

几何建模-Parasolid中GO功能使用

1.背景介绍 1.1 Parasolid和它的接口间关系 1.2 什么是GO GO全称是Graphical Output.你的程序需要在屏幕或者打印设备上显示模型数据时。在需要使用PK中的某个渲染函数时创建图形显示数据时&#xff0c;Parasolid会调用GO相关的函数。GO函数会输出绘图指令给你的应用程序提供…

《昇思25天学习打卡营第20天|onereal》

应用实践/LLM原理和实践/基于MindSpore的GPT2文本摘要 基于MindSpore的GPT2文本摘要 数据集加载与处理 数据集加载 本次实验使用的是nlpcc2017摘要数据&#xff0c;内容为新闻正文及其摘要&#xff0c;总计50000个样本。 数据预处理 原始数据格式&#xff1a; article: [CLS…

MySQL-基础点

目录 MySQL概念 数据库三大范式是什么&#xff1f; blob 和 text 有什么区别&#xff1f; DATETIME 和 TIMESTAMP 的异同&#xff1f; MySQL 中 in 和 exists 的区别&#xff1f; MySQL 里记录货币用什么字段类型比较好&#xff1f; MySQL 怎么存储 emoji? 用过哪些 M…