javascript 二分法(数组array)

 更新时间:2010年04月24日 19:38:00   作者:  
扩展Array对象,为其添加二分法查找功能,提高查找效率。
在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;
}

相关文章

  • JS简单的图片放大缩小的两种方法

    JS简单的图片放大缩小的两种方法

    这篇文章介绍了JS简单的图片放大缩小的两种方法,有需要的朋友可以参考一下
    2013-11-11
  • javascript 循环语句 while、do-while、for-in、for用法区别

    javascript 循环语句 while、do-while、for-in、for用法区别

    本文章介绍了在学习javascript中的循环语句的用法,包while、do-while、for-in、for它们之间的区别,也是常用的循环语句了,有需要的朋友可以了解一下
    2012-03-03
  • Javascript实现前端简单的路由实例

    Javascript实现前端简单的路由实例

    本文将使用javascript实现一个极其简单的路由实例。WEB开发中路由概念并不陌生,我们接触到的有前端路由和后端路由。后端路由在很多框架中是一个重要的模块,同样前端路由在单页面应用也很常见,它使得前端页面体验更流畅。
    2016-09-09
  • 微信小程序实现左滑删除效果源码

    微信小程序实现左滑删除效果源码

    这篇文章主要给大家介绍了关于微信小程序实现左滑删除效果的相关资料,左滑删除效果在app的交互方式中十分流行,比如全民应用微信,文中给出了详细的实现代码,需要的朋友可以参考下
    2023-08-08
  • javascript中关于&& 和 || 表达式的小技巧分享

    javascript中关于&& 和 || 表达式的小技巧分享

    我将会介绍和解析12个简单但是强大的JavaScript技巧. 这些技巧所有的JavaScript程序员都可以马上使用, 你不需要成为JavaScript高手才能理解这些.下面我们开始本系列的第一篇文章,介绍下强大的&& 和 || 表达式
    2015-04-04
  • 前端MQTT详细使用的两种方法

    前端MQTT详细使用的两种方法

    MQTT(消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的通讯协议,该协议构建于TCP/IP协议上,这篇文章主要给大家介绍了关于前端MQTT详细使用的两种方法,需要的朋友可以参考下
    2024-07-07
  • JavaScript实现将阿拉伯数字转换成中文或大写中文的方法

    JavaScript实现将阿拉伯数字转换成中文或大写中文的方法

    现在有需求将亿元之内的阿拉伯数字转换成中文,例如:1234转换后变为一千二百三十四再转换成壹仟贰佰叁拾肆,所以本文给大家介绍了用JavaScript实现将阿拉伯数字转换成中文大写,感兴趣的小伙伴跟着小编一起来看看吧
    2024-11-11
  • 基于javascript bootstrap实现生日日期联动选择

    基于javascript bootstrap实现生日日期联动选择

    这篇文章主要介绍了基于javascript bootstrap实现生日日期联动选择的相关资料,需要的朋友可以参考下
    2016-04-04
  • 温习Javascript基础语法之词法结构

    温习Javascript基础语法之词法结构

    javascript是一门简单的语言,也是一门复杂的语言。这篇文章主要介绍了温习Javascript基础语法之词法结构的相关资料,需要的朋友可以参考下
    2016-05-05
  • 微信小程序左滑删除功能开发案例详解

    微信小程序左滑删除功能开发案例详解

    这篇文章主要介绍了微信小程序左滑删除功能开发案例详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11

最新评论