算法基础 --- 日常总结

版权声明:欢迎转载,转载请注明出处 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)表示分解和合并所要花费的时间之和。

解法:

  1. 当d<logb a时,时间复杂度为O(n^(logb a))
  2. 当d=logb a时,时间复杂度为O((n^d)*logn)
  3. 当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--);
	}
}

猜你喜欢

转载自blog.csdn.net/Nate__River/article/details/82715813
今日推荐