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

yizhihongxing

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

以下是 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日

相关文章

  • node下使用UglifyJS压缩合并JS文件的方法

    Node 中使用 UglifyJS 压缩合并 JS 文件的方法,可以避免传统的前端压缩方式,可以使用命令行或者 Gulp 等构建工具实现。 下面是使用 Node 和 UglifyJS 压缩合并 JS 文件的具体步骤: 1. 安装 Node.js 和 UglifyJS 确保电脑已经安装好了 Node.js,可以在终端中输入 node -v 命令查看 Node.…

    node js 2023年6月8日
    00
  • Nodejs对postgresql基本操作的封装方法

    Node.js对PostgreSQL基本操作的封装方法可以通过以下步骤实现: 1. 安装依赖 在使用Node.js操作PostgreSQL之前,需要安装相应的依赖库。可以使用npm安装pg模块,它是Node.js对PostgreSQL操作的封装库。 npm install pg 2. 连接PostgreSQL数据库 在使用Node.js操作PostgreSQ…

    node js 2023年6月8日
    00
  • Nodejs中读取中文文件编码问题、发送邮件和定时任务实例

    关于Nodejs中读取中文文件编码问题,我们可以使用iconv-lite这个模块来解决。iconv-lite可以将非UTF-8编码的字符进行转换,示例代码如下: const fs = require(‘fs’); const iconv = require(‘iconv-lite’); fs.readFile(‘test.txt’, (err, data) …

    node js 2023年6月8日
    00
  • vue3.0报错Cannot find module‘worker_threads‘的解决办法

    下面是关于“vue3.0报错Cannot find module ‘worker_threads‘的解决办法”的完整攻略。 问题分析 “Cannot find module ‘worker_threads‘”错误通常会在使用 Vue.js 3.0 的时候出现。这是由于开发者在使用一些较新的 Node.js 版本时没有看到 IVue3 正在使用的 worker…

    node js 2023年6月8日
    00
  • npm ERR! code 128的错误问题解决方法

    下面是“npm ERR! code 128的错误问题解决方法”的完整攻略。 问题描述 在使用npm安装/更新模块时,有时会遇到如下错误: npm ERR! code 128 npm ERR! Command failed: git clone –depth=1 -q https://github.com/xxx/xxx.git /Users/xxx/.np…

    node js 2023年6月8日
    00
  • Node.js中的process.nextTick使用实例

    下面是我对于“Node.js中的process.nextTick使用实例”的完整攻略: 1. 什么是process.nextTick process.nextTick是Node.js中的一个函数,用于异步执行一个回调函数,但是它的执行优先级高于setTimeout,setImmediate,IO事件等异步方法。 通过使用process.nextTick,可以…

    node js 2023年6月8日
    00
  • NodeJS自定义模块写法(详解)

    NodeJS是一种使用JavaScript编写服务器端应用程序的平台。开发者可以使用NodeJS扩展自己的项目,并编写自定义模块来提高应用的可复用性和可维护性。 本文将介绍如何编写NodeJS自定义模块的详细攻略,主要包含以下内容: 模块的定义:使用module.exports对象或exports对象 module.exports对象和exports对象都是…

    node js 2023年6月8日
    00
  • JavaScript 的setTimeout与事件循环机制event-loop

    JavaScript 的 setTimeout 与事件循环机制 event-loop 是前端开发中比较重要的知识点之一,本篇文章将会提供一份完整攻略,以便更好地理解这两个概念。 setTimeout 简介 setTimeout 是 JavaScript 的一个函数,可以用来设置一个定时操作,表示在指定的延迟时间之后执行一段程序。setTimeout 语法如下…

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