JavaScript实现冒泡排序和递归函数

本文介绍了冒泡排序的基本思想和实现过程,以及递归函数的概念,通过实例展示了如何用递归计算阶乘。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、冒泡排序

 冒泡排序核心思路:

        1.比较相邻两项,将大的往后放,将小的往前放 交换位置

        2.每一轮比较后最大的数在最后面

        3.由于最后一个数是最大得数 不参与这一轮比较

        外部总共比较多少轮  每一轮比较次数

实现原理:

        数组中有 n 个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过 n-1(数组的 length - 1) 轮,就完成了所有数的排序。

例如:

        将数组 [20,18,27,19,35] 从小到大进行排序,会进行如下的操作:

        第一轮:20 18 [18,20,27,19,35]

                      20 27  [18,20,27,19,35]

                      27 19  [18,20,19,27,35]

                      27 35  [18,20,19,27,35]

        第二轮  18 20 [18,20,19,27,35]

                      20 19 [18,19,20,27,35]

                      20 27 [18,19,20,27,35]

        第三轮:  18 19 [18,19,20,27,35]

                      19 20 [18,19,20,27,35]

        第四轮  18 19 [18,19,20,27,35]

运行代码:
var arr = [20,18,27,19,35];//进行排序 从小到大排序 
function bSort(arr){
  // 控制外面比较轮数 
  for(var i=0;i<arr.length-1;i++){
    // 控制每一轮比较次数
    for(var j=0;j<arr.length-1-i;j++){
      // 比较前一项和后一项
      if(arr[j]>arr[j+1]){
        //交换位置  把后一项存起来
        var temp = arr[j+1];
        // 把小得往前放 
        arr[j+1] = arr[j];
        arr[j] = temp;
      }
    }
  }
  return arr
}
console.log(bSort(arr));

 以上代码运行结果如下:


二、递归函数

什么是递归函数?

        简单来说,递归就是创建一个调用自身的函数,直到程序满足了我们想要达到的效果。通常我们会用递归来进行深拷贝、斐波那契数列、阶乘···

        要注意的是,我们在使用递归函数时必须要设置一个跳出条件,否则函数就会不停的调用自己。

        接下来我会写一个用递归函数实现阶乘的例子,让我们熟悉递归函数的使用。

求6的阶乘:
function fc(n) {
  // 设置跳出条件
  if(n==1){return 1}
  return n * fc(n - 1)
}
var res = fc(6);
console.log(res)

代码运行结果如下:

代码解析(原理):

        fc(6):6的阶乘 = 6 × 5的阶乘

        fc(5):5的阶乘 = 5 × 4的阶乘

                    ······

        fc(2):2的阶乘 = 2 × 1的阶乘

        fc(1):当n = 1时,也就是求1的阶乘时直接返回1,跳出递归,不再调用自身。

        最后打印结果就为6的阶乘。


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值