JS冒泡排序案例详解

先看一下案例效果:
在这里插入图片描述
HTML代码:

<input type="text" value="" id="bubble-input">
<button onclick="bubbleSort()">冒泡排序</button>
<h4 id="bubbleSort-result"></h4>

JS代码:

// 冒泡排序
function bubbleSort() {
       var arr = document.getElementById("bubble-input").value;
       var characters = arr.split('');
       var len = characters.length;
       for (var i = 0; i < len - 1; i++) {
           for (var j = 0; j < len - 1 - i; j++) {
               if (characters[j] > characters[j + 1]) {
                   var temp = characters[j];
                   characters[j] = characters[j + 1];
                   characters[j + 1] = temp;
               }
           }
       }
       document.getElementById("bubbleSort-result").innerHTML = "排序结果:" + characters
}

详解:

  1. 获取输入字符串:
var arr = document.getElementById("bubble-input").value;

这行代码从页面上获取一个输入框的值(假设输入框的 id 是 bubble-input),并将这个值赋给变量 arr。

  1. 将字符串转换为字符数组:
var characters = arr.split('');

使用 split(‘’) 方法将字符串 arr 转换为一个字符数组 characters,每个字符成为数组中的一个元素。

  1. 获取数组的长度
var len = characters.length;

计算字符数组 characters 的长度,并赋值给变量 len。

  1. 冒泡排序
for (var i = 0; i < len - 1; i++) {
    for (var j = 0; j < len - 1 - i; j++) {
        if (characters[j] > characters[j + 1]) {
            var temp = characters[j];
            characters[j] = characters[j + 1];
            characters[j + 1] = temp;
        }
    }
}
  • 外层循环控制总共需要进行的遍历次数。因为每遍历一次,都会将一个最大的元素放到数组的末尾,所以总共需要进行 len - 1 次遍历。
  • 内层循环进行相邻元素的比较和交换。每次比较 characters[j] 和 characters[j + 1],如果前者大于后者,则交换它们的位置。
  • 交换位置的过程使用了一个临时变量 temp 来暂存 characters[j] 的值。
  1. 显示排序结果
document.getElementById("bubbleSort-result").innerHTML = "排序结果:" + characters;

将排序后的字符数组 characters 显示在页面上一个具有 id 为 bubbleSort-result 的元素中。

示例:
假设输入框中的值为 “dacb”,则处理步骤如下
arr 的值为 “dacb”。
characters 的值为 [‘d’, ‘a’, ‘c’, ‘b’]。

  • 外层循环第 1 次:
    • 内层循环第 1 次:[‘d’, ‘a’, ‘c’, ‘b’] 变为 [‘a’, ‘d’, ‘c’, ‘b’](交换 d 和 a)。
    • 内层循环第 2 次:[‘a’, ‘d’, ‘c’, ‘b’] 变为 [‘a’, ‘c’, ‘d’, ‘b’](交换 d 和 c)。
    • 内层循环第 3 次:[‘a’, ‘c’, ‘d’, ‘b’] 变为 [‘a’, ‘c’, ‘b’, ‘d’](交换 d 和 b)。
  • 外层循环第 2 次:
    • 内层循环第 1 次:[‘a’, ‘c’, ‘b’, ‘d’] 变为 [‘a’, ‘b’, ‘c’, ‘d’](交换 c 和 b)。
    • 内层循环第 2 次:没有变化(c 和 d 已经是正确顺序)。
  • 外层循环第 3 次:
    • 内层循环第 1 次:没有变化(a 和 b 已经是正确顺序)。

最终结果:[‘a’, ‘b’, ‘c’, ‘d’]。
页面上显示的结果为:排序结果:a,b,c,d。

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

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

相关文章

vue2 bug求助!!!(未解决,大概是浏览器缓存的问题或者是路由的问题)

我的vue2项目出现了一个超级恶心的bug 过程&#xff1a; 1 操作流程&#xff1a;页面a点击a标签->到页面b->页面b用户退出刷新页面->点击浏览器的返回按钮返回上一页 2 结果&#xff1a;返回页面后页面没有刷新导致用户名还显示着&#xff0c;页面没有发生任何变化&a…

5.3.2网安学习第五阶段第三周回顾(个人学习记录使用)

本周重点 ①网络安全攻防技术体系 ②Windows入侵排查 ③Linux入侵排查 ④僵蠕木毒排查与处理 本周主要内容 ①网络安全攻防技术体系 一、攻击层面 1、分类 &#xff08;1&#xff09;指定目标&#xff1a;APT攻击手段&#xff0c;对指定目标进行长期作战和渗透&#x…

从Multisim到Proteus,再到SmartEDA:电子设计软件的进化之旅

在电子设计领域&#xff0c;软件工具的演进犹如一条璀璨的轨迹&#xff0c;记录着科技进步的每一个步伐。从Multisim的初创&#xff0c;到Proteus的崛起&#xff0c;再到如今SmartEDA的崭露头角&#xff0c;这些电子设计软件不仅极大地提升了设计效率&#xff0c;更推动了整个行…

函数高级:函数的默认参数|函数的占位参数|函数重载

函数的默认参数 函数占位参数 函数重载 总结&#xff1a; 函数的形参&#xff0c;有自己的参数值就用参数值&#xff0c;没有就用形参列表的默认值。 参数列表中&#xff0c;某位置有自己的默认值&#xff0c;从该位置起&#xff0c;往后就都必须设有默认值。 函数声明和函数…

一键设置常用纸张和页面边距-Word插件-大珩助手

Word大珩助手是一款功能丰富的Office Word插件&#xff0c;旨在提高用户在处理文档时的效率。它具有多种实用的功能&#xff0c;能够帮助用户轻松修改、优化和管理Word文件&#xff0c;从而打造出专业而精美的文档。 【新功能】常用纸张和常用边距 1、一键设定符合中国人常用…

器利而事善——datagrip 的安装以及连接mysql

一&#xff0c;安装 下载&#xff1a;直接到官网下载即可&#xff0c; 破解&#xff1a;这是破解连接&#xff1a;https://pan.baidu.com/s/11BgOMp4Z9ddBrXwCVhwBng &#xff0c;提取码&#xff1a;abcd&#xff1b; 下载后&#xff0c;选择倒数第三个文件&#xff0c;打开da…

ant design vue 表格错位,表头错位

ant design vue 表格错位,表头错位 在官网中,我们可以看到下面图片的描述: 好的,我们按照官网来一波,前面都设置了固定宽度,娃哈哈就不设置了.会出现下面效果 为啥会多了一个竖线(因为按照官网来一波x:1300,这个1300太小的原因) 3.那我们把1300改成1600,1700试试,结果也不是…

揭秘大数据时代的数据库存储引擎:关系型、NoSQL与NewSQL如何选择?

文章目录 01 关系型数据库&NoSQL数据库&NewSQL数据库1. 关系型数据库2. NoSQL数据库3. NewSQL数据库 02 OLTP&OLAP&HTAP对比1. OLTP数据库2. OLAP数据库3. HTAP数据库 03 总结 在大数据和AI时代&#xff0c;数据库成为各类应用不可或缺的重要组成部分。而数据库…

机器学习AI大模型的开源与闭源:哪个更好?

文章目录 前言一、开源AI模型1.1 开源的优点1.2 开源的缺点 二、闭源AI模型2.1 闭源的优点2.2 闭源的缺点 三、开源与闭源的平衡3.1 开源与闭源结合的案例3.2 开源与闭源的战略选择 小结 前言 在过去的几年里&#xff0c;人工智能&#xff08;AI&#xff09;和机器学习&#xf…

操作系统复习-linux的进程管理

linux的进程管理 linux进程的相关概念 进程的类型 前台进程 前台进程就是具有终端&#xff0c;可以和用户交互的进程&#xff0c;会占用终端shell&#xff0c;不可以输入其他的命令。 后台进程 前台进程就是具有终端&#xff0c;可以和用户交互的进程。 不会占用终端shell&a…

算法金 | Python 中有没有所谓的 main 函数?为什么?

​大侠幸会&#xff0c;在下全网同名[算法金] 0 基础转 AI 上岸&#xff0c;多个算法赛 Top [日更万日&#xff0c;让更多人享受智能乐趣] 定义和背景 在讨论Python为何没有像C或Java那样的明确的main函数之前&#xff0c;让我们先理解一下什么是main函数以及它在其他编程语言…

【精度高+低功耗+高灵敏】十六通道电容式触摸芯片GT316L

GT316L是一款功能强大的电容式触摸触控芯片&#xff0c;它支持16通道触摸感应输入&#xff0c;适用于多种形式的触摸按键控制&#xff1b;相比国产芯片&#xff0c;具备更强大的抗干扰能力、灵敏度调节、自动校准能力、高可靠性、快速唤醒模式、超低功耗10uA左右等优点;内置了灵…

day29--mybatis(二) 进阶

一.接口代理方式实现Dao 1.1 代理开发方式介绍 ​ 采用 Mybatis 的代理开发方式实现 DAO 层的开发&#xff0c;这种方式是我们后面进入企业的主流。 Mapper 接口开发方法只需要程序员编写Mapper 接口&#xff08;相当于Dao 接口&#xff09;&#xff0c;由Mybatis 框架根据接…

一键生成迷宫-Word插件-大珩助手新功能

Word大珩助手是一款功能丰富的Office Word插件&#xff0c;旨在提高用户在处理文档时的效率。它具有多种实用的功能&#xff0c;能够帮助用户轻松修改、优化和管理Word文件&#xff0c;从而打造出专业而精美的文档。 【新功能】迷宫生成器 1、可自定义迷宫大小&#xff1b; …

RocketMQ相关知识知多少

一、RocketMQ的定义 官网网址&#xff1a;领域模型概述 | RocketMQ Apache RocketMQ 自诞生以来&#xff0c;因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨&#xff0c;RocketMQ 已经成为业内共识的金…

深入理解Java中的位运算符

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

Python深度学习基于Tensorflow(15)OCR验证码 文本检测与识别实例

文章目录 文本检测文本识别CTC层生成验证码并制作数据集建立模型模型推理 参考 文本检测 文本检测和目标检测类似&#xff0c;其不同之处在于文本目标具有序列特征&#xff0c;有连续性&#xff0c;可以通过结合 Faster R-CNN 和 LSTM 的方式进行文本检测&#xff0c;如 CTPN …

Android Graphics 显示系统 - Android Jank detection with FrameTimeline

“ 最近有公司同事在处理UI卡顿及FPS自动化监测的问题&#xff0c;我也顺便看了一点相关的内容&#xff0c;其中在Perfetto的官方说明文档中有一篇关于利用FrameTimeLine进行Jank监测的解读&#xff0c;个人觉得蛮有意思的&#xff0c;借助工具翻译该篇文章并加上本人拙劣的解读…

linux(centos7)开机自启jar文件

问题 之前参考网上说的直接在/etc/rc.local文件中增加sh文件启动语句&#xff0c;但是没有效果&#xff1a; /root/dashboard/dashboard_backend/start_dashboard.sh 权限也增加了&#xff0c;还是不行&#xff1a; chmod x /etc/rc.local 排查 排查了一下&#xff1a; 查…

基于聚类和回归分析方法探究蓝莓产量影响因素与预测模型研究附录

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 目录 背景数据说明数据来源思考 附录数据预处理导入包以及数据读取数据预览数据处理 相关性分析聚类分析数据处理确定聚类数建立k均值聚类模型 …