Javascript中实现倒三角形的双层for循环的三种方法

Javascript中实现倒三角形的双层for循环的三种方法

双层for循环的使用在日常编写代码中非常常见。我在标题中所说的倒三角形其实就是递减的双层循环,如下示意图:

🌍🌍🌍🌍🌍🌍
🌍🌍🌍🌍🌍
🌍🌍🌍🌍
🌍🌍🌍
🌍🌍
🌍

递增的正三角形也同理。我目前总结了三种方法,如果后续发现更多简便的方法还会继续更新,也欢迎小伙伴的留言。

双层for循环的本质其实就是一个二维的计数器,外层循环控制行数,内层循环控制每行有几个‘东西’。从第一行开始,当内层循环全部执行完毕,就会跳转到第二行,以此类推。这里我们只讨论内层循环的多种方式。

方法一

<script>
	var earth = '';
    for(var i=0; i <= 6; i++){
	//每层记述从i开始,随着外层i的递增,内从循环里的内容会递减,也就是说第一行是从0到6有6个数,第二行是从1到6有5个数,第三行是从2到6有4个数,以此类推
        for(var j=i; j<=6; j++){
            earth += '🌍';
         }
    //每次当每行的内容都完成后,加一个换行
         earth += '\n';
     }
     console.log(earth);
</script>

方法二

<script>
	var earth = '';
    for(var i=0; i <= 6; i++){
	//内层循环每次都是从0开始,但是控制比较的数,第一行从0到6,第二行从0到5,第三行从0到4。。。
    for(var j=0; j<=6-i; j++){
            earth += '🌍';
         }
    //每次当每行的内容都完成后,加一个换行
         earth += '\n';
     }
     console.log(earth);
</script>

方法三

<script>
	var earth = '';
    for(var i=0; i <= 6; i++){
	//如果让内层循环从6开始,就需要递减了
    for(var j=6; j>=1; j--){
            earth += '🌍';
         }
    //每次当每行的内容都完成后,加一个换行
         earth += '\n';
     }
     console.log(earth);
</script>

举个🌰

当一个要求一个数组用双层循环实现冒泡排序时,用方法二更为合适。
冒泡排序的逻辑如下:
原数组:2,5,3,9,6,8,1
第一轮:2,5,3,9,6,8,1
              2,5
                    3,5
                          5,9
                                6,9
                                      8,9
                                            1,9
               2,3,5,6,8,1,9
               第一轮一共对比了6对

第二轮:2,3,5,6,8,1,9
              2,5
                    3,5
                          5,6
                                6,8
                                      1,8
               2,3,5,6,1,8,9
               第二轮一共对比了5对

第三轮:2,3,5,6,1,8,9
              2,5
                    3,5
                          5,6
                                1,6
               2,3,5,1,6,8,9
               第三轮一共对比了4对

第四轮:2,3,5,1,6,8,9
              2,5
                    3,5
                          1,5
               2,3,1,5,6,8,9
               第四轮一共对比了3对

第五轮:2,3,1,5,6,8,9
              2,5
                    1,3
               2,1,3,5,6,8,9
               第五轮一共对比了2对

第六轮:2,1,3,5,6,8,9
              1,2
               1,2,3,5,6,8,9
               第六轮一共对比了1对

至此,数组冒泡排序完毕。

var arr9 = [2,5,3,9,6,8,1];
var temp = 0;
for(var i=0; i <= arr9.length-1; i++){
    for (var j=0; j<=arr9.length-1-i; j++){
         if(arr9[j]>arr9[j+1]){
            temp = arr9[j];
            arr9[j] = arr9[j+1];
            arr9[j+1] = temp;
          }
      }
}
console.log(arr9);

有更简单的冒泡排序方法吗?有的,直接调用函数sort()

var arr9 = [2,5,3,9,6,8,1];
arr174b.sort(
     function(a, b){
     //return a - b;  //升序的顺序排列
     return b - a;  //降序的顺序排列
     }
}
console.log(arr9);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值