Posted in Javascript onApril 24, 2010
在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; }
javascript 二分法(数组array)
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@