码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • js冒泡排序的几种写法?


    冒泡排序是一种简单的排序算法,其基本思想是重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。以下是几种常见的 JavaScript 实现方式:

    1. 使用基本的 for 循环实现冒泡排序:
      1. function bubbleSort(arr) {
      2. var len = arr.length;
      3. for (var i = 0; i < len - 1; i++) {
      4. for (var j = 0; j < len - 1 - i; j++) {
      5. if (arr[j] > arr[j + 1]) { //相邻元素两两对比
      6. var temp = arr[j + 1]; //元素交换
      7. arr[j + 1] = arr[j];
      8. arr[j] = temp;
      9. }
      10. }
      11. }
      12. return arr;
      13. }
    2. 使用优化过的 for 循环实现冒泡排序:
      1. function bubbleSort(arr) {
      2. var len = arr.length;
      3. for (var i = 0; i < len - 1; i++) {
      4. for (var j = 0; j < len - i - 1; j++) {
      5. if (arr[j] > arr[j + 1]) { //相邻元素两两对比
      6. var temp = arr[j + 1]; //元素交换
      7. arr[j + 1] = arr[j];
      8. arr[j] = temp;
      9. }
      10. }
      11. }
      12. return arr;
      13. }
    3. 使用递归实现冒泡排序:
      1. function bubbleSort(arr) {
      2. if(arr.length == 1) return arr;
      3. var len = arr.length;
      4. var lastLen = arr.length - 1;
      5. for(var i = 0; i < len - 1; i++) {
      6. if(arr[i] > arr[i + 1]) { //相邻元素两两对比
      7. var temp = arr[i + 1]; //元素交换
      8. arr[i + 1] = arr[i];
      9. arr[i] = temp;
      10. bubbleSort(arr); //递归调用自己,继续比较下一个元素
      11. } else {
      12. break; //如果当前元素不比下一个元素大,那么已经排好序了,不需要再比较了。
      13. }
      14. }
      15. return arr;
      16. }

      以上三种冒泡排序的实现方式在功能上是一样的,但是具体的实现方式、可读性和性能可能会有所不同。一般来说,如果数组的大小比较小,使用简单的 for 循环就可以了。如果数组的大小比较大,可能需要使用优化过的 for 循环或者递归以减少不必要的比较次数。

  • 相关阅读:
    StarRocks 支持 Apache Hudi 原理解
    Python学习(打基础版)
    Java NIO 三大核心(Buffer、Channel、Selector)理解
    31.springboot中的注解总结(spring,springmvc,springboot,mybatis,dubbo)
    Python IDLE使用方法详解(包含常用快捷键)
    文件系统(一):存储介质、原理与架构
    Kali Linux 2022新版发布
    QT延时/等待
    Java随笔-Semaphore
    数字人直播软件多少钱,数字人直播系统多少钱,真正赚钱的是?
  • 原文地址:https://blog.csdn.net/zybijiso666/article/details/133830703
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号