文章详细
js 二分法
 2014/1/16 12:40:07 评论:0人 阅读次数:8688

采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>js二分法查找</title>
</head>

<body>
<script>
function binarySearch(items, value){
	var startIndex = 0,
	stopIndex = items.length - 1,
	middle = Math.floor((stopIndex + startIndex)/2);
	while(items[middle] != value && startIndex < stopIndex)
	{
		//调整查找范围
		if (value < items[middle]){
			stopIndex = middle - 1;
		} else if (value > items[middle]){
			startIndex = middle + 1;
		}
		//重新计算中项索引
		middle = Math.floor((stopIndex + startIndex)/2);
	}
	//确保返回正确的值
	return (items[middle] != value) ? -1 : middle;
} 		
var a = [1,2,3,4,5,6,7,8,9];
var value = binarySearch(a,3);
alert(value);
</script>
</body>
</html>

(完)

如需转载请注明出处:http://www.86y.org/art_detail.aspx?id=683【js 二分法】幸凡学习网
0
 
相关文章
推荐文章
Created By Charry-May 3,2010
粤ICP备10093478号-1
顶部