在Javascript中,我们可以通过prototype关键字为对象添加新的属性或者是方法,下面是一个为Array对象添加二分法查找功能的方法: 复制代码 代码如下: Array.prototype.binarySearch = function(obj) { var value = 0; var left = 0; var right= this.length; while(left <= right) { var center = Math.floor((left+right)/2); if(this[center] == obj) { value = center; } if(obj < this[center]) { right = center - 1; } else { left = center + 1; } } alert(value); } //如下为测试代码: function testArrayBinarySearch() { var array = new Array(); var key = 678; var number = 1000; for (i = 0; i < number; i++) { array.push(i); } array.binarySearch(key); } window.onload = function() { testArrayBinarySearch(); } 下面是国外的代码 javascript二分法 //Copyright 2009 Nicholas C. Zakas. All rights reserved. //MIT-Licensed, see source file 复制代码 代码如下: function binarySearch(items, value){ var startIndex = 0, stopIndex = items.length - 1, middle = Math.floor((stopIndex + startIndex)/2); while(items[middle] != value && startIndex < stopIndex){ //adjust search area(调整查找范围) if (value < items[middle]){ stopIndex = middle - 1; } else if (value > items[middle]){ startIndex = middle + 1; } //recalculate middle(重新计算中项索引) middle = Math.floor((stopIndex + startIndex)/2); } //make sure it's the right value(确保返回正确的值) return (items[middle] != value) ? -1 : middle; }
推荐阅读
jQuery Lightbox 图片展示插件使用说明
一、信息原作者:Benjamin Arthur Lupton当前版本:v1.3.7最终版发布日期:2009年4月25日项目地址:http://jquery.com/plugins/project/jquerylightbox_bal翻译编辑:张鑫旭(zhangxinxu)二、安装在您页面的头部hea>>>详细阅读
本文标题:javascript 二分法(数组array)
地址:http://www.17bianji.com/kaifa2/JS/26537.html
1/2 1