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);