循环控制语句

概述:根据对应的条件来控制对应的代码片段的执行次数(多次执行 循环执行)

常用的循环控制语句:

  • while循环
  • do while循环
  • for循环
  • ...

循环是重复执行多次代码所以对应的执行次数是可以计算的

时间复杂度:用于评估执行程序所消耗的时间,区分效率,可以估算出程序对处理器的使用程度

循环的三要素

  • 初始值 初始的变量值
  • 迭代值 基于初始值的变化
  • 判断条件 对应的执行循环中代码的变化

while循环

var 变量 = 初始值
while (终止条件(当他为false的时候就会结束对应的循环)) {
      执行的代码(循环体)
      迭代
}
        var sum = 0
        var i = 0
        while (i<100) {
            i++
            sum+=i
        }
        console.log(sum)
  •  var关键词修饰的变量进行变量提升 伪全局变量
  • var关键词修饰的变量会被预编译 但是不会读取赋值操作 而是强制赋值undefined
  • 在循环中不建议声明变量 会覆盖之前的值 会加大空间复杂度

do while

        var 变量 = 初始值
        do {
            迭代量
            循环体
        } while (条件);

先执行后判断,至少执行一次

        var i = 0
        var sum = 0
        do {
            i++
            if (i%2) {
                sum+=i
            }
        } while (i<100); 
        console.log(sum)

do while和while以及使用场景

  • do while是先执行后判断,最少执行一次 (常用于人机交互)
  • while是先判断后执行 最少执行0次 (对应的循环处理)

for

for循环跟while之间可以互相转换也就说他们对应的运行过程是一样的

任何循环之间可以互相转换 while循环适用于你不知道执行次数的时候 for循环适用于知道执行次数

        for(初始值;条件判断;迭代值){
            循环体
        }
        for(var i = 1 ; i<=100 ; i++){
            console.log(i)
        }
        console.log(i)
        for(;;){
            //死循环
        }

循环嵌套

所有的循环都可以进行嵌套 不同循环之间可以相互嵌套

  • 循环嵌套时间复杂度会增加(不建议嵌套超过俩层)
  • 循环嵌套执行的次数为外层循环次数*内层循环次数
for(初始值;条件;迭代量){
for(初始值;条件;迭代量){
执行的代码 (执行的次数是对应的俩个循环执行次数的乘积)
}
}
var 变量 = 初始值
while(条件表达式){
执行的代码(循环体)
迭代
var 变量 = 初始值
while(条件表达式){
执行的代码(循环体)
迭代
}
}
for(初始值;条件;迭代量){
var 变量 = 初始值
while(条件表达式){
执行的代码(循环体)
迭代
}
}

嵌套在最里面的那个循环执行的次数是所有的循环的次数的乘积

break 和 continue

break是用于跳出 他可以跳出对应的switch块 以及对应的循环块 (跳出来了也就意味着本次对应的循环或对应的代码执行结束了
contiue是用于跳过某个循环 下次循环继续执行

break示例

for(var i=1;i<5;i++){
if(i%2==0){
break; //结束了当前的循环
}
console.log(i)//1
}

continue示例

for (var i = 1; i < 5; i++) {
if (i % 2 == 0) {
continue //跳过本次循环 进入下一次
}
console.log(i) //1 3
}

 循环总结

  • 循环是用于反复多次执行一段代码
  • 循环的三种方案可以互相嵌套 以及三种方法可以随意转换 常用的为for和while
  • while循环用于处理不知道对应的执行次数 for循环常用于知道对应的执行次数
  • 循环要避免对应的死循环(死循环就是循环的迭代条件一直为true 没有办法停止)
  • while死循环写法 for死循环写法

  • while循环的时间复杂度低于for循环 for循环的执行效率要低于while循环
  • do while循环先做后判断 最少执行一次 while及for最少执行0次

时间复杂度

在恒定的环境内,他的执行次数和对应的变量的比例构成的值。也就是说在恒定机器内执行次数越多那么时间复杂度越高,那么对应的时间复杂度越高 他的执行效率就越低。将时间复杂度降低那么就可以提高对应的效率。

时间复杂度(用O来表示)跟对应的执行次数成正比

分类:

  • O(1)常数阶
  • O(logn)对数阶
  • O(n)线性阶
  • O(nlogn)线性对数阶
  • O(n平方)平方阶
  • O(n的立方)立方阶

时间复杂度排序
O1<Ologn<On<Onlogn<On^2<On^3<On^k....

空间复杂度

程序在运行的时候开辟的内存大小。

空间复杂度越占用的内存就越(内存不再优先考虑)

总结

循环嵌套不会超过两次

从对应的时间复杂度来看,logn和n是比较常用的

logn是比n要快得的,所以后续的优化中采用logn级别的时间复杂度来替代n

对于for循环和while循环,对应的时间复杂度来说while要快于for循环,用while来替代for循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值