版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/Nate__River/article/details/82715813
master公式
master公式(也称主方法)是用来利用分治策略来解决问题经常使用的时间复杂度的分析方法,(补充:分治策略的递归解法还有两个常用的方法叫做代入法和递归树法,以后有机会和亲们再唠),众所周知,分治策略中使用递归来求解问题分为三步走,分别为分解、解决和合并,所以主方法的表现形式:
T (n) = aT(n/b) + O(N^d)
其中 a >= 1 and b > 1 是常量,其表示的意义是n表示问题的规模,a表示递归的次数也就是生成的子问题数,b表示每次递归是原来的1/b之一个规模,f(n)表示分解和合并所要花费的时间之和。
解法:
- 当d<logb a时,时间复杂度为O(n^(logb a))
- 当d=logb a时,时间复杂度为O((n^d)*logn)
- 当d>logb a时,时间复杂度为O(n^d)
二分查找
function binarySearch(arr,value){
let left = 0;
let right = arr.length - 1;
let middle;
while(left <= right){
middle = left + (right - left) / 2;
if(arr[middle] < value){ // value在右边
left = middle + 1;
} else if(arr[middle] === value){
return middle;
} else { // value在左边
right = middle-1;
}
}
return -1;
}
数组逆序
function reverse(array) {
let l = 0;
let r = array.length-1;
while(l != r){
swap(array, l++, r--);
}
}