检索算法---二分查找
2023-02-18 16:40:29 时间
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;
}
相关文章
- 从JAVA内存到垃圾回收,带你深入理解JVM
- 透过现象看本质:Java类动态加载和热替换
- logstash处理多行日志-处理java堆栈日志
- Java High Level REST Client 使用地理位置查询
- 垃圾回收你懂,Java垃圾回收你懂吗?
- 几款Java开发者必备常用的工具,准点下班不在话下
- Ulysses for Mac(最好用的Markdown文本编辑写作工具)
- Xilinx MPSoC FSBL中的看门狗的用法总结
- 【FusionCompute】使用VMware Workstaion安装部署VRM(三)
- 【FusionCompute】添加CNA主机到VRM管理节点(四)
- RabbitMQ:安装配置
- RabbitMQ:消息模型
- 【FusionCompute】基于FreeNAS部署并使用虚拟存储(五)
- 【FusionCompute】创建虚拟机失败(六)
- Xshell同步复制粘贴Windows的东西
- 【OpenFiler】使用虚拟机安装openfiler
- 什么是BPM系统?BPM流程管理系统介绍
- Online DDL和Cardinality
- MRR和ICP
- 犀牛鸟中学科学人才培养计划喜报:祝贺北京一零一中学李一昕同学获丘成桐中学科学奖全球总决赛金奖!