BigO

##使用BigO来衡量程序码的时间复杂度(time complexity)是很重要的一件事情,接下来让我们来学习吧
以下为阅读[https://pjchender.blogspot.com/2017/09/big-o-notation-time-complexity.html] PJ老师的阅後心得,并且搭配JavaScript资料结构与演算法!!!

  • BigO使用Worst case

https://ithelp.ithome.com.tw/upload/images/20210514/20130419dZwLugTprF.png


BigO(1)

只输出该array的index值0、1,即为常数1

function BigO(array){
    console.log(array[0])
    console.log(array[1])
}
BigO([0,1,2,3,4,5])
//0
//1

BigO(n)

输出n即线性输出,若输入10000次即输出10000次

function BigO(array){
   for(let i=0; i<array.length; i++){
       console.log(array[i])
   }
}
BigO([0,1,2,3,4,5])
// 0
// 1
// 2
// 3
// 4
// 5

BigO(n^2)

输出n即为平方,要特别注意BigO(n^2)是很差的算法了!!!

function BigO(array){
   for(let i=0; i<array.length; i++){
       for(let j=0; j<array.length; j++){
           console.log(array[j])
       }
   }
}
BigO([0,1])
// 0
// 1
// 0
// 1


BigO(log n)

虽然输入是线性,但因为每次都对半砍,所以为BigO(logn)

let array1 = [1,3,5,7,9,11]

function BigO(array, key){
    let min = 0 
    let max = array.length -1
    while(min <= max){
        let middle = Math.floor((min + max) /2)
        
        if(array[middle] > key) {
            max = array[middle -1]
        }else if(array[middle] < key){
            min = array[middle +1]
        }else{
            return middle
        }
    }
}
console.log(BigO(array1, 5 ))
//index为2

<<:  演算法 Fizz Buzz

>>:  NIST SDLC和RMF(续)-PartII

Day 26 Serverless的运算服务-AWS Lambda

因应容器化的服务,AWS云上也产生了相对应的服务-Lambda,让我们可以不用顾及作业系统底层恼人的...

第21天~OKHttp

OKHttp -网路下载传输资料 开新档案- 找到网站 https://square.github....

[资料库] 学习笔记 - 商城交易之订单付款与付款後产生送货单

这次练习的题目是做出商城中订单付款与付款後产生送货单的功能 功能主要需求:记录是否付款、付款方式是什...

[Day02] Vue i18n - 导入 & 基础用法

i18n 全写为 internationalization,俗称的多国语系也常被称之为本地化 (L...

Day22 探讨Templates

经过这几天的介绍,相信大家也越来越了解它里面包含的功能了吧! 多了解一些东西,对之後的开发一定会越来...