循环的三要素
1.初始值 初始的变量值
2.迭代量 基于初始值的变化
3.判断条件 对应的执行循环中代码的条件
常用的循环语句
1.while循环
var 变量 = 初始值 while(条件表达式){ 执行的代码(循环体) 迭代 }
2.do while循环
var 变量 = 初始值 do{ 迭代量 循环体 }while(条件)
注:do while和while区别
1.do while是先执行后判断,最少执行一次 (常用于人机交互)
2.while是先判断后执行,最少执行0次 (对应的循环处理)
3.for循环
for循环跟while之间可以互相转换也就说他们对应的运行过程是一样的
for(初始值;条件判断;迭代量){ 循环体 }
循环嵌套
所有的循环都可以进行嵌套 不同循环之间可以相互嵌套
for(初始值;条件;迭代量){ var 变量 = 初始值 while(条件表达式){ 执行的代码(循环体) 迭代 } } for(初始值;条件;迭代量){ for(初始值;条件;迭代量){ 执行的代码 (执行的次数是对应的俩个循环执行次数的乘积) } }
注:嵌套在最里面的哪个循环执行的次数是所有的循环的次数的乘积
break和continue
1.break是用于跳出 他可以跳出对应的switch块 以及对应的循环块 (跳出来了也就意味着本次对应的循环或对应的代码执行结束了)
for(var i=1;i<5;i++){ if(i%2==0){ break; //结束了当前的循环 } console.log(i)//1 }
2.contiue是用于跳过某个循环 下次循环继续执行
for (var i = 1; i < 5; i++) { if (i % 2 == 0) { continue //跳过本次循环 进入下一次 } console.log(i) //1 3 }
时间复杂度
在恒定的环境内,他的执行次数和对应的变量的比列构成的值为时间复杂度。
时间复杂度是在一定程度上表示当前的程序的运行速度,间复杂度越低那么运行速度就越快。
还有一个就是我们需要考虑的空间复杂度,空间复杂度是指你的程序在运行的时候开辟的内存大小,间复杂度越低占用的内存就越少(内存不再优先考虑)时间复杂度的分类及示例
时间复杂度使用字母O来表示 他的对应分类和其执行次数的比列是相关的
1.O(1) 常数阶
console.log('hello world') //一切没有变量来控制的 只执行一次的代码他属于常数阶 O(1)
2.O(logn) 对数阶
var m = 10 var n = 100 var k = 2 while(m>n){ m *= k ; console.log('hello') }
3.O(n) 线性阶
//这个的执行次数由对应变量n控制 所以他属于线性阶 O(n) for(var i=0;i<n;i++){ console.log('hello world') }
4.O(nlogn) 线性对数阶
for(var i=0;i<n;i++){ var m = 10 var n = 100 var k = 2 while(m>n){ m *= k ; console.log('hello') } }
5.O(n平方) 平方阶
for(var i=0;i<n;i++){ for(var j=0;j<n;j++){ console.log('hello world') } }
注意:循环嵌套不会超过俩次!logn是比n要快得,所以在后续得优化中我们采用logn级别得时间复杂度来替代n。对于for循环和while循环 对应得时间复杂度来说while要快于for循环,用while来替代for循环