javascript 冒泡排序 正序和倒序实现代码

冒泡排序是一种简单的排序算法,其基本思想是通过比较相邻元素的大小进行排序。在一个数组中,每次比较都会将相邻元素中较大的元素向右移动。重复此过程直到整个数组都按从小到大的顺序排列。

以下是 JavaScript 冒泡排序的正序实现代码:

function bubbleSort(arr) {
  for (let i = 0; i < arr.length - 1; i++) {
    for (let j = 0; j < arr.length - 1 - i; j++) {
      if (arr[j] > arr[j + 1]) {
        let temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
  return arr;
}

其中,arr 表示待排序的数组。代码中使用了两个 for 循环嵌套来实现冒泡排序,外层循环控制循环的次数,内层循环控制比较的次数。如果前一个元素比后一个元素大,则交换它们的位置。循环完成后,返回排序后的数组。

以下是 JavaScript 冒泡排序的倒序实现代码:

function bubbleSortReverse(arr) {
  for (let i = 0; i < arr.length - 1; i++) {
    for (let j = 0; j < arr.length - 1 - i; j++) {
      if (arr[j] < arr[j + 1]) {
        let temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
  return arr;
}

与正序实现代码相比,倒序实现代码只需将 if 语句中的大于号(>)替换为小于号(<),即可实现从大到小排序。

下面给出两个示例以说明冒泡排序的具体过程。

示例1:

假设有如下一个数组:

let arr = [5, 3, 8, 4, 2];

首先进行正序排序。第一次循环后,变化如下:

[3, 5, 4, 2, 8]

第二次循环后,变化如下:

[3, 4, 2, 5, 8]

第三次循环后,变化如下:

[3, 2, 4, 5, 8]

由于第四次循环后没有元素需要交换,因此循环结束,最终排序结果为:[2, 3, 4, 5, 8]。

示例2:

假设有如下一个数组:

let arr = [5, 3, 8, 4, 2];

然后进行倒序排序。第一次循环后,变化如下:

[5, 8, 4, 3, 2]

第二次循环后,变化如下:

[8, 5, 4, 3, 2]

第三次循环后,变化如下:

[8, 5, 4, 3, 2]

由于第四次循环后没有元素需要交换,因此循环结束,最终排序结果为:[8, 5, 4, 3, 2]。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 冒泡排序 正序和倒序实现代码 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • Egret引擎开发指南之发布项目

    首先我们需要明确一下,Egret引擎是一款基于HTML5 Canvas的跨平台游戏引擎,支持iOS、Android、Web、Windows等多平台开发。发布项目是我们在Egret开发完成后将游戏上传至各大应用商店或者网站进行发布的过程。 一、发布准备 在发布前,我们需要完成以下准备工作: 检查游戏是否符合各大应用商店或者网站的规定要求,如版权、广告、隐私政策…

    node js 2023年6月8日
    00
  • nodejs使用http模块发送get与post请求的方法示例

    下面我会详细讲解“nodejs使用http模块发送get与post请求的方法示例”的完整攻略,包含以下内容: 使用http模块发送GET请求的方法示例 使用http模块发送POST请求的方法示例 使用http模块发送GET请求的方法示例 GET请求是最常用的HTTP请求之一,通常用于获取某个资源的信息,下面是一个使用Node.js的http模块发送GET请求…

    node js 2023年6月8日
    00
  • JS无限树状列表实现代码

    JS无限树状列表实现代码 概述 本攻略旨在讲解如何使用 JavaScript 实现无限树状列表。代码实现基于递归算法和 HTML/CSS。 前置知识 HTML CSS JavaScript 实现思路 实现无限树状列表,我们需要将所有的节点组织起来,并且保证每个节点在其父节点的下级目录中。 实现这个思路,我们可以用一个对象数组来存储节点信息。每个节点信息主要包…

    node js 2023年6月8日
    00
  • Node.js console控制台简单用法分析

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境,可以使JavaScript获得在浏览器之外使用的能力。在Node.js中,console是一个重要的工具,可以在命令行中显示信息、错误、警告等。 常用console方法 console.log():在控制台输出信息。 console.error():输出错误信息。 console.…

    node js 2023年6月8日
    00
  • vue报错Error:Cannot find module ‘fs/promises’的解决方式

    针对“vue报错Error:Cannot find module ‘fs/promises’”这个问题,我们可以按照以下步骤进行解决: 问题分析 这个问题通常会出现在使用 Vue 3.x 版本的时候,它提示我们在运行Vue项目时缺少了Node.js的fs模块,具体报错是“Cannot find module ‘fs/promises’”。 造成这个问题的原因…

    node js 2023年6月8日
    00
  • 整理 node-sass 安装失败的原因及解决办法(小结)

    整理 node-sass 安装失败的原因及解决办法(小结) 问题描述 在使用npm安装node-sass时,可能会遇到以下错误: gyp ERR! configure error gyp ERR! stack Error: Can’t find Python executable "python", you can set the PYT…

    node js 2023年6月8日
    00
  • 在NodeJs中使用node-schedule增加定时器任务的方法

    在Node.js中,可以使用node-schedule包来创建定时器,该包可以用于执行重复的定时任务或者单次执行的任务。下面是使用node-schedule包来增加定时器任务的方法: 1. 安装node-schedule包 可以使用npm命令来安装node-schedule包: npm install node-schedule 2. 引入node-sche…

    node js 2023年6月8日
    00
  • 了不起的node.js读书笔记之例程分析

    针对“了不起的node.js读书笔记之例程分析”的完整攻略,我可以为您提供以下内容: 标题 “了不起的node.js读书笔记之例程分析”完整攻略 前言 对于初学者而言,node.js入门的确是需要花费一定的时间和精力,因此,笔者为了方便初学者的学习,将自己的学习过程与心得体会进行了总结,并在此分享给大家,希望对大家的学习有所帮助。 示例一:使用Express…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部