js的双for循环,求详细解释
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js的双for循环,求详细解释相关的知识,希望对你有一定的参考价值。
var num = [5, 12, 6, 16, 3, 15, 34,19];
var za="";
for( var i=0; i<num.length; i++)
for( var j=i; j<num.length; j++)
if(num[i]>num[j])
za=num[i];
num[i]=num[j];
num[j]=za;
console.log(num)
求详细解释for循环和if里面求法
新手越细越好 最好能把每次循环都写出来
不理解for循环的方法
运行完后num数组会被被排序
for循环运行的次序是,外层先走一步,然后内层走完,然后外层再走一步,内层再走一圈。
具体来说,
i=0: j依次遍历0,1,2,3,4,5,6,7,程序比较num[0]和num[0-7],只要发现num[0]比某一个数大,就把num[0]和此数交换
这样一来当i=0的时候,j走了一圈后的结果就是把数组的第一个数,也就是num[0]弄成了整个数组中最小的数(也就是3)
接下来i=1; j依次遍历1,2,3,4,5,6,7
结果是num[1]变成剩下数中最小的(也就是5)
然后i=2;j遍历2,3,4,5,6,7
i=3;j走过3,4,5,6,7
.
.
.
最后的结果就是数组被排序了。 参考技术A 这就是个排序算法,如果这个数组前一个数大于后面一个数,就把后面一个数与前面一个数调换一下位置。每轮可以选出这轮最小的数放到数组最前面//而且这个其实可以改进一下var j=i+1
i从第1个数开始,j从第i个数开始。比如i=0时,进入最里面的循环j=0,num[i]=num[j]=5,不符合if语句,j=1,num[i]=5,num[j]=12,不符合if语句.....j=4,num[j]=3,num[i]=5,符合if语句,换位置。依次类推,你就明白了 参考技术B
这个是冒泡排序。
用数组中的每一位和后面的进行比较,然后换位置。
var num = [5, 12, 6, 16, 3, 15, 34,19];var za="";
for( var i=0; i<num.length; i++) //数组中的每个位置的数
for( var j=i; j<num.length; j++) //要比较的数
if(num[i]>num[j]) //换位置
za=num[i];
num[i]=num[j];
num[j]=za;
console.log(num) 参考技术C
其实这种写法可以改进的,性能会好上不少。稍微做一个逻辑思考,也容易懂,下面贴出代码
for( var i=0; i<num.length-1; i++)for( var j=i+1; j<num.length; j++)
可以测试下循环次数。
参考技术D 自己 找个for循环的视频 好好看看吧,这是最基础了在matlab中使用for循环求1到10阶乘的值
用matlab设计程序如下:
for i=1:10
sum=1;
for j=1:i
sum=sum*j;
end
sum
end
运行结果显示,1到10的阶乘分别是: 1、2、 6、 24、120、 720、5040、40320、362880 、3628800。
运行结果如图:
扩展资料
MATLAB中for循环的语法是 -
for index = values
...end。
其中,values的值取如下格式:
源程序代码以及算法解释如下:
matlab求1-10的阶乘的函数源码如下:
function p = factorial()
p=1;
for a=1:10%设置要求的阶乘
for i=1:a%循环遍历从1到a
p=p*i;%遍历相乘
end;//函数结束
p%输出结果
p=1;%p还原其初始值
end
end
程序运行结果如下:
扩展资料:
C++实现求1到10的阶乘之和,代码如下:
#include<stdio.h>
int main()
double a,b=1,sum=0;
for(a=1;a<=10;a++)
b = a*b; /* 原理:1!等于1乘以1,2!等于1!乘以2,3!等于2!乘以3,以此类推 ,10!等于9!乘以10 */
sum = sum+b; /* 依次将1到10的阶乘相加 */
printf("%lf\\n",sum);
return 0;
同理,如果求一个已知整数Number1到另一个已知整数Number2的阶乘之和,只需在代码里做以下修改和替换:
#include<stdio.h>
int main()
double a,b=1,sum=0;
for(a=Number1;a<=Number2;a++) /* 在此处用具体的值替换Number1和Number2,如求10到100的阶乘之和,只需在此处用10替换Number1,100替换Number2 */
b = a*b;
sum = sum+b;
printf("%lf\\n",sum);
return 0;
这几个语句可以用:
参考技术C sum = 1;for i = 1:1:10
sum = sum * i;
end
disp(['10的阶乘 = ',num2str(sum)]); 参考技术D
以上是关于js的双for循环,求详细解释的主要内容,如果未能解决你的问题,请参考以下文章
java里面的for循环的格式: for(String s : arr)是啥意思,能否详细解释一下?
java for循环怎样写出1-10!的和啊,求详细说明,我看不懂