网页前端设计

http://www.86y.org
feedskyQQ邮箱

搜索文章

js 二分法

用声音读出全文关注我吧
 2014/1/16 12:40:07 阅读次数:4128

采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值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>

(完)


大家有什么问题或技术上的想法可以在此与大家分享,也可以加入前端爱好者QQ群(141999928)一起学习进步:【幸凡前端技术交流群】
0

如果您觉得本文的内容对您的学习有所帮助,捐赠与共勉,支付宝(左)或微信(右)

阅读全文内容关闭