Web前端面试题如何分析时间复杂度开课

北京看荨麻疹的医院 http://pf.39.net/bdfyy/bdfhl/210719/9204186.html

问题:如何分析时间复杂度?

Web前端开发

解析:当问题规模即要处理的数据增长时,基本操作要重复执行的次数必定也会增长,那么我们关心地是这个执行次数以什么样的数量级增长。

我们用大O表示法表示下常见的时间复杂度量级:

常数阶O(1)线性阶O(n)对数阶O(logn)线性对数阶O(nlogn)平阶O(n)

当然还有指数阶和阶乘阶这种常极端的复杂度量级,我们就不讨论了。

O(1)

传说中的常数阶的复杂度,这种复杂度无论数据规模n如何增长,计算时间是不变的。

constincrement=n=n++

举个简单的例:

不管n如何增长,都不会影响到这个函数的计算时间,因此这个代码的时间复杂度都是O(1)。

O(n)

线性复杂度,随着数据规模n的增,计算时间也会随着n线性增。

典型的O(n)的例就是线性查找。

constlinearSearch=(arr,target)=

{for(leti=0;iarr.length;i++)

{

if(arr[i]===target)

{returni

}

}

return-1

}

线性查找的时间消化与输入的数组数量n成个线性例,随着n规模的增大,时间也会线性增长。

O(logn)

对数复杂度,随着问题规模n的增长,计算时间也会随着n对数级增长。

典型的例是分查找法。

functionsbinarySearch(arr,target)

{letmax=arr.length-1

letmin=0

while(min=max){

letmid=Math.floor((max+min)/2)

if(targetarr[mid]){

max=mid-1

}elseif(targetarr[mid])

{min=mid+1

}else{

returnmid

}

}

return-1

}

在分查找法的代码中,通过while循环,成2倍数的缩减搜索范围,也就是说需要经过log2^n次即可跳出循环。

事实上在实际项目中,O(logn)是个非常好的时间复杂度,比如当n=的数据规模时,分查找只需要7次,线性查找需要次,这对于计算机而言差距不,但是当有10亿的数据规模的时候,分查找依然只需要30次,而线性查找需要惊人的10亿次,O(logn)时间复杂度的算法随着数据规模的增大,它的优势就越明显。

O(nlogn)

线性对数复杂度,随着数据规模n的增长,计算时间也会随着n呈线性对数级增长。

constmergeSort=array=

{constlen=

array.lengthif(len

2){

returnlen

}

constmid=Math.floor(len/2)

constfirst=array.slice(0,mid)

constlast=array.slice(mid)

returnmerge(mergeSort(fist),mergeSort(last))

functionmerge(left,right)

{varresult=[];

while(left.lengthright.length)

这其中典型代表就是归并排序

result.push(left.shift());

}else{

result.push(right.shift());

}

}

while(left.length)

result.push(left.shift());

while(right.length)

result.push(right.shift());

returnresult;

}

}

O(n)

平方级复杂度,典型情况是当存在双重循环的时候,即把O(n)的代码再嵌套循环遍,它的时间复杂度就是O(n)了,代表应用是冒泡排序算法。

function

bubleSort(arra){var

temp;

for(var

i=0;iarra.length;i++){for(var

j=0;jarra.length-i-1;j++){

if(arra[j]arra[j+1]){temp

=arra[j];

arra[j]=arra[j+1];

arra[j+1]=temp;

}

}

};

以上就是小科今天整理提供的Web前端开发面试题,希望为Web前端同学提供了有用的面试素材,以后小科每日均会提供Python、Web及MySQL数据库相关的习题。学习没有捷径,希望大家都能少走一些弯路,顺利找到工作!




转载请注明:http://www.aierlanlan.com/cyrz/3434.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了