JS-数组和函数冒泡排序递归函数

2023-05-16

数组和函数

数组

计算数组中所有元素的和

 // 定义数组
        var  nums = [23, 789, 67, 500, 123, 78, 900, 671];
        // 1.计算数组中所有元素的和
        var sum = 0;
        for (i = 0; i < nums.length; i ++) {
            sum += nums[i];
        }
        console.log('数组中所有元素的和为:',sum)
        console.log('')

计算数组中元素的平均数

        var avg = sum /nums.length;
        console.log('数组中元素的平均数为:',avg)

获取数组中最大的元素

var max = nums[0];//默认值是第一个元素
        for (var i = 1;i < nums.length; i ++) {
            if (nums[i]>max) {
                max = nums[i];
            }
        }
        console.log('数组中最大的元素为:',max);

获取数组中最小的元素

var min = nums[0];
        for (var i = 1;i < nums.length ; i ++) {
            if (nums[i] < min) {
                min = nums[i];
            }
        }
        console.log('数组中最小的元素为:', min)

数组的冒泡排序

 var nums = [23, 789, 67, 500, 123, 78, 900, 671];
        console.log(nums);

        // 开始循环,决定冒泡次数
        for (var n = 1; n < nums.length; n ++) {
            // 进行冒泡, 把当前最大的放在最后
            for (var i = 0; i < nums.length - n; i ++) {
                // 如果前面的元素比下一个元素大,交换两个元素的值
                if (nums[i] > nums[i + 1]) {
                    // 交换两个元素的值
                    var temp = nums[i];
                    nums[i] = nums[i + 1];
                    nums[i + 1] = temp;
                }
            }
        }

        console.log(nums);

冒泡 从大到小

var nums = [23, 789, 67, 500, 123, 78, 900, 671];
         console.log(nums);


         // 循环 决定冒泡次数
         for (var i = 1; i < nums.length; i ++) {
             // 进行冒泡排序
             for (var j = 0; j < nums.length - i; j ++) {
                 // 如果前面的元素比后面的元素小
                 if (nums[j] < nums[j + 1]) {
                     // 交换两个元素的值
                     var temp = nums[j];
                     nums[j] = nums[j + 1];
                     nums[j + 1] = temp;
                 }
             }
         }

         console.log(nums);

数组排序-sort

var nums = [23, 789, 67, 500, 123, 78, 900, 671]
        nums.sort(function(next,curr) {
            //return next-curr;
            if (next < curr) {
                return -1;
            }
        }) ;
        console.log(nums);

        nums.sort(function(next,curr) {
            return curr-next;
        });
        console.log(nums)

数组的平均值排序

 // 先计算平均值,再进行数组排序
         var nums = [
       		[234, 23, 34, 123, 899],
       		[12, 34, 611],
       		[902, 78, 675, 34, 2, 6],
       		[89, 78, 90, 67, 617, 890]
       ]
        // 排序
        nums.sort(function(next,curr) {
            return avg(next) - avg(curr)
        });
        console.log(nums)

       function avg(arr) {
            //  计算每个数组的和 遍历每个数组
            var sum = 0;
            for (var i = 0;i < arr.length; i ++) {
                sum += arr[i];
            }
            // 计算平均值
            return sum / arr.length;
       }

函数

判断是否是素数

function isPrime(num) {
    // 从2开始到num-1,一次去整除num
    for (var i = 2;i < num-1; i ++) {
        // 如果有一个能被整除,不是素数了
        if (num % i === 0) {
            return false
        }
    }
    // 如果能够执行到这里
    return true;  
}
console.log(isPrime(197));  //ture
console.log(isPrime(100));  //false


// 输出100-200之间的素数
for (var i = 100;i <= 200; i ++) {
    if(isPrime(i)) {
        console.log(i);
    }
}

所有参数的和

// 定义函数,计算所有参数的和
function sum()  {
    var res = 0;

    for (var i = 0;i < arguments.length; i ++) {
        res += arguments[i]
    }
    return res
}
console.log(sum(1,2,3))

获取数组中最大的数

function max() {
    var res = arguments[0];
    for (var i = 0;i < arguments.length; i ++) {
        if (arguments[i]>res) {
            res = arguments[i];
        }
    }
    return res;
}

console.log(max(23, 789, 67, 500, 123, 78, 900, 671))

数组排序

function arraySort(arr, isDown) {
    // 循环进行冒泡
    for (var i = 1; i < arr.length; i ++) {
        // 进行冒泡排序
        for (var n = 0; n < arr.length - i; n ++) {
            // 如果 isDown 是true,降序排列
            if (isDown) {   
                // 降序排列
                if (arr[n] < arr[n + 1]) {
                    // 交换两个元素的值
                    var temp = arr[n];
                    arr[n] = arr[n + 1];
                    arr[n + 1] = temp;
                }
            } else {
                // 升序排列
                if (arr[n] > arr[n + 1]) {
                    // 交换两个元素的值
                    var temp = arr[n];
                    arr[n] = arr[n + 1];
                    arr[n + 1] = temp;
                }
            }
        }
    }
    // 返回排好序的数组
    return arr;
}
// 定义数组
var nums = [100, 23, 56, 890, 567, 198, 230];

console.log(nums);

参数中的最大值和最小值

function max() {
    // 定义变量,记录最大值,默认是第一个参数
    var res = arguments[0];
    // 循环遍历所以的参数
    for (var i = 1; i < arguments.length; i ++) {
        // 如果由参数比 res 大,修改 res 的值
        if (arguments[i] > res) {
            res = arguments[i];
        }
    }
    // 返回结果
    return res;
}
/**
         * 取所有参数中最小的值
         * @return number 参数中值最小的
        */
function min() {
    // 定义变量,记录最大值,默认是第一个参数
    var res = arguments[0];
    // 循环遍历所以的参数
    for (var i = 1; i < arguments.length; i ++) {
        // 如果参数比 res 小,修改 res 的值
        if (arguments[i] < res) {
            res = arguments[i];
        }
    }
    // 返回结果
    return res;
}
console.log(max(123, 23423, 2342, 1231231, 1232,434, 4, 67));
console.log(min(123, 23423, 2342, 1231231, 1232,434, 4, 67));

递归函数-计算阶乘

// 定义函数,实现某个数字的阶乘
function fn(n) {
    // 如果 n 是小于等于 2
    if (n <= 2) {
        return n;
    }
    return n * fn(n - 1);
}

console.log('8的阶乘:', fn(8));
console.log('10的阶乘:', fn(10));
console.log('3的阶乘:', fn(3));

/*
            fn(4) 调用  执行 return 4 * fn(3)
                fn(3) 调用  return 3 * fn(2)
                    fn(2) 调用  return 2
                    fn(2) 调用结束
                fn(3) 调用结束 return 6;
            fn(4) 调用结束 return 24
        */

递归函数-累加

//第一种方法:单向分支,先递归再满足条件
function fnc(n) {
    if (n <= 1) {
        return n;
    } 
    return n + fnc(n-1);
}
console.log(fnc(100));

// 第二种方法:满足条件,再递归 
function fn(n){
    if (n > 1) {
        return n + fn(n -1);
    }
    return n;
}
console.log(fn(10));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS-数组和函数冒泡排序递归函数 的相关文章

  • AT指令1

    我之前认为手机号码与SIM卡是一一对应的 xff0c 后来想想不对 xff0c 因为有换卡不换号的情况啊 xff0c 所以SIM卡应该只是一个电话号码的储存介质 xff0c 而与SIM卡一一对应的是另一个编码 IMSI xff08 国际移动
  • Keil5 的常见错误

    1 C Source led c 22 warning 69 D integer conversion resulted in truncation 这个是由于实际值的范围超过了定义值的范围 2 C Source main c 15 err
  • c语言实现FTP

    这个实现了客户端和服务端文件的相互传输 xff08 只在本机上运行过 xff09 xff0c 如果是要两台计算机相互传数据要改ip 给大家看一下实现过程 xff08 exe文件要先开服务端的 xff09 输入1 直接将快捷方式拖拽上去就有绝
  • 2021 => 手把手搭建dhcp服务(详细)

    架构解析 dhcp服务器配置 配置实验环境 关闭VMware的dhcp服务 给虚拟机添加网卡为VMnet1 安装与配置dhcp服务 给新添的网络配置IP 配置dhcp服务 在真实的主机系统上查看dhcp配置 为真实主机系统分配固定的IP 修
  • 2021 => 手把手教你NFS部署(实用)

    NFS服务 原理 xff1a 供文件共享服务 为Web Server 配置集群中的后端存储 支持多节点同时挂载以及并发送与写入 架构解析 这是一张大型网站高并发架构图 xff0c 我们只需注意图中圈红的地方 建立NFS文件系统本质就是用来进
  • 2021最新阿里云部署k8s集群(篇1 购买服务器)

    实验kubernetes版本 xff1a v1 22 1 x1f947 阿里云地址 阿里云开发者社区 阿里云官网开发者社区 云计算社区 注意 xff1a 做此实验先准备100RM xff0c 本实验为抢占实例 CentOs版本 xff1a
  • 七层负载均衡HAproxy生产环境LVS+Keepalived+HAproxy(三)

    LB Haproxy Nginx x1f4af 解析 xff1a 七层负载均衡器 xff0c 为与七层模型上的应用层 xff0c 通过URL地址 xff08 应用层 xff09 进行负载均衡 优点 xff1a 详细地址 xff0c 数据精准
  • Kubeadm-K8s1.20-高可用部署-详细-生产环境(四)

    文章目录 kubeadm部署高可用集群注意事项k8s部署 二进制与高可用的区别 一 环境配置1 所有节点修改主机名2 所有节点进行域名解析3 所有节点关闭相关应用3 1 防火墙关闭3 2 dnsmasq关闭3 3 NetworkManage
  • k8s Pod简介与探针实现零宕机发布

    目录 一 Pod简介 Pod的退出流程 1 什么是Pod 2 定义一个Pod 二 探针 零宕机发布 1 Pod探针 2 Pod探针的检测方式 3 探针检查参数配置 4 startupProbe 5 liveness 6 readiness
  • VmWare克隆 CentOS7

    问题1 xff1a 无法启动图形化界面 背景 xff1a 搭建 Zookeeper 集群需要多台服务器 xff0c 于是参考 VmWare 克隆 CentOS7 xff0c 但是克隆后启动无法进入 图形化界面 报错现象 xff1a 分析过程
  • 【Opencv】CV_* was not declared in this scope 的部分解决方法

    问题描述及原因分析 Opencv在更新到 新版本 后 xff0c 在运行有些 旧版本 的代码时会出现此类情况 解决方案 xff1a error CV AA was not declared in this scope 在头文件中添加 inc
  • Jmeter性能测试(11)--JDBC Request之Query Type

    工作中遇到这样一个问题 xff1a 需要准备10W条测试数据 xff0c 利用jmeter中的JDBC Request向数据库中批量插入这些数据 xff08 只要主键不重复就可以 xff0c 利用函数助手中的Random将主键的ID末尾五位
  • UE4C++UI平滑曲线图绘制

    UE4C 43 43 UI平滑曲线图绘制 前言 UE4的曲线在UMG上面绘制的时候总是和麻烦的 xff0c 这里我们采用UE4曲线FRichCurve中的绘制方法 xff0c 传入对应的Key值 xff0c 然后差值获取俩个点之间的数据 x
  • 从底层了解IO操作,文件描述符和文件流指针

    目录 一 库函数 二 系统调用 三 文件流指针和文件描述符 我们最早接触IO操作函数应该就是c语言了吧 xff0c 所有今天我们从c语言中的函数出发 xff0c 逐层剥离 xff0c 回归到IO操作的本质 一 库函数 1 fopen FIL
  • 2021-前端-VsCode插件

    此乃吾习前端 xff0c VsCode之插件 xff0c 个人所装 xff0c 喜着自拿 xff0c 不足之处还望海涵 xff0c 多加批评 1 Auto Close Tag 自动闭合尾部的标签 2 Atuo Rename Tag 修改 h
  • STM32串口发送数据控制LED灯的亮灭

    1 配置相应的 GPIO 时钟 串口时钟 复用时钟 2 配置GPIO结构体 3 配置串口 main c include 34 stm32f10x h 34 include 34 delay h 34 include 34 led h 34
  • cc2530 按键中断实验——按键控制LED灯的亮灭

    在本次学习中 xff0c 主要通过外部中断来控制LED的亮灭 首先 xff0c 先查看相关电路图 由图可知 xff0c 当CC2530端口1的1号引脚输出低电平时 xff0c LED3将被点亮 xff0c 当按键31按下时 xff0c 端口
  • cc2530 定时器控制LED灯以不同的频率闪烁

    1 cc2530有两个LED灯 xff1a 定时器有4种工作方式 可通过定时器 T1 以及 定时器 T3同时来分别控制LED灯的闪烁 xff0c 我们让定时器1处于8分频的自由模式下 xff0c T1 为16位的计数器 xff0c 计数器每
  • arduino esp8266 请求服务器未得到响应(ESP8266HTTPClient)

    学习太极创客esp8266 服务器的基本操作 xff0c 遇到了因版本不同导致编译无法通过 此问题为我们在arduino下载的esp8266的版本为3 0 2版本 xff0c 和官方给出来的历程所用的版本不同所导致的 xff0c 我们需要添

随机推荐

  • esp8266--arduinoJson在线解析V6版本的使用

    在线解析官网https arduinojson org 点击Assistant 可以选择V6版本以及V5版本 xff0c 这里我们选择V6版本 配置 输入你要反序列化的函数 xff0c 点击Next Size 点击 NextProgram
  • Freertos-小车开发笔记 2 --编码电机使用

    目录 前言 一 TB6612电机驱动板 1 TB6612 模块介绍 2 TB6612 芯片原理图介绍与控制说明 3 tb6612 D153B 模块接线说明 二 编码电机驱动后轮 1 编码电机初始化 2 编码电机初始化 总结 前言 通过编码点
  • Freertos-小车开发笔记 4 --遥控器开发

    目录 前言 xff1a 一 ADC DMA采集遥感的数据 二 串口3发送数据 三 wifi模块连接阿里云 前言 xff1a 遥控器开发采用的标准库编写 oled用于显示遥感的x y 值 一 ADC DMA采集遥感的数据 由于涉及到多个adc
  • Jmeter性能测试(12)--关联之正则表达式提取器

    如果有这样的情况 xff1a 一个完整的操作流程 xff0c 需要先完成某个操作 xff0c 获得某个值或数据信息 xff0c 然后才能进行下一步的操作 xff08 也就是常说的关联 将上一个请求的响应结果作为下一个请求的参数 xff09
  • qt-5串口与通讯

    文章目录 文章目录 一 串口通讯 二 实现串口通讯 1 在头文件中引入 QtSerialPort 类的两个头文件 xff08 必须引入 xff09 2 在工程文件中添加以下代码 3 在头文件中定义全局的串口对象 4 相关配置 5 通过一个按
  • qt-5数据库使用

    文章目录 目录 前言 一 所需要的头文件 二 数据库操作 1 addDatabase的函数原型如下 2 连接数据库 3 创建数据库表 4 插入数据到表中 5 更新表中的数据 总结 前言 例如 xff1a qt 5 创建数据库 xff0c 创
  • 利用MapReduce算法实现统计分析(单词统计,或者关键词统计)实验报告

    本文相关idea的代码出自 xff1a https blog csdn net weixin 38468167 article details 108658531 实验内容 xff1a 开发MapReduce算法 xff0c 实现统计分析
  • linux chomd 有何作用

    96 chmod 96 是 Linux 用来更改文件或目录权限的命令 它允许你控制文件和目录的访问权限 xff0c 决定文件 目录能否被用户读取 写入 执行的权限 具体说 xff0c chmod 可以更改 owner group 和 oth
  • 缓存同步-Canal

    目录 安装Canal 监听Canal 项目中对于canal的应用 应用场景 项目测试 场景 xff1a 缓存不是设置了有效期吗 xff0c 说明在有效期范围内数据是一直在的 xff0c 那么当数据库中的数据发送改变 xff0c 那么缓存还是
  • 对Redis布隆过滤器的实现

    目录 实现思路 首先最重要的自定义hash 然后就是将key放入bitSet 然后就是判断布隆过滤器bitSet数组中是否含有对应的key 代码 实现思路 39条消息 Redis布隆过滤器 Fairy要carry的博客 CSDN博客 首先最
  • fork()函数详解

    目录 1 基本了解 xff1a 2 fork函数的了解 xff1a 3 僵死进程 xff1a 4 fork和多线程 xff1a 1 多线程中某个线程调用 fork xff0c 子进程会有和父进程相同数量的线程吗 xff1f 2 父进程被加锁
  • 一阶线性自抗扰控制的整定

    摘要 线性自抗扰控制 linear active disturbance rejection control LADRC 是解决系统外部不可测扰动和内部未知不确定性的一种新型控制方法 其精髓是将系统的不确定性转化为一个可观测的状态 利用扩张
  • 单目视觉SLAM综述

    摘要 单目视觉SLAM因单目相机体积小 功耗低 信息获取丰富受到了广泛使用 为了深入分析单目视觉SLAM的优势 首先 简述单目视觉SLAM的基本原理 从特征点检测 相机姿态估计 选取关键帧 创建地图 地图及相机姿态优化 闭环检测等方面总结S
  • idea 修改 JDK 版本

    idea 修改 JDK 版本 第一步 xff1a 修改环境变量 xff08 修改成你需要的 JDK 版本 xff09 第二步 xff1a IDEA中的修改 导入Jdk进IDEA 第三步 xff1a 修改项目的sdk 第四步 xff1a 修改
  • Jmeter性能测试(13)--常见问题及解决方法

    jmeter作为一个开源的纯Java性能测试工具 xff0c 工作中极大的方便了我们进行接口 性能测试 xff0c 但使用过程中也遇到了很多的问题 xff0c 下面就记录一下自己遇到的问题 xff0c 后续会不断更新 1 获取日志 在使用j
  • C++的基础语法知识

    目录 一 认识C 43 43 1 如C语言 C 43 43 C Python等语言 xff0c 为什么会有这么多语言存在 xff1f 2 C 43 43 解决了什么问题 xff1f 3 什么是面向对象 xff1f 4 C 43 43 的特性
  • 基于遗传算法车辆路径问题(VRP)

    一 车辆路径问题简介与求解要求 交通运输是国民经济的动脉 xff0c 各种运输方式在日常运输营运管理工作中都要面对这样一个共同的问题 xff1a 如何为载运工具 汽车 xff0c 列车 xff0c 轮船和飞机 xff0c 统称为车辆 确定行
  • docker 安装(centos7虚拟机)

    Docker xff0c 翻译过来就是码头工人 Docker是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中 xff0c 然后发布到任何流行的Linux机器上 xff0c 也可以实现虚拟化 容器
  • java 死锁产生的四个必要条件

    1 互斥使用 xff0c 即当资源被一个线程使用 占有 时 xff0c 别的线程不能使用 2 不可抢占 xff0c 资源请求者不能强制从资源占有者手中夺取资源 xff0c 资源只能由资源占有者主动释放 3 请求和保持 xff0c 即当资源请
  • JS-数组和函数冒泡排序递归函数

    数组和函数 数组 计算数组中所有元素的和 span class token comment 定义数组 span span class token keyword var span nums span class token operator