JavaScript之二分法
2024-09-05 05:48:43
二分法:
二分查找,又称为折半查找。
注意:二分法查找的数组必须是有序的。
/*
获取元素88在数组中第一次出现的索引位置
如果数组元素中存在88,则直接返回88在数组中的索引位置即可。
如果数组元素中没有88,那么直接返回-1即可。
*/
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// 保存需要查找的元素值
var value = 4;
// 定义一个变量,用于查找的过程中保存(min+max)/2
var mid;
// 定义两个变量,用于保存查找元素在数组中存在的索引范围
var min = 0,max = arr.length - 1;
// 因为不明确查找次数,索引我们使用死循环
while (true) {
// 更新mid的值,min+max的一半
mid = parseInt((min + max) / 2);
// 判断arr[mid]和value值的大小
if (arr[mid] > num) {
min = mid - 1;
} else if (arr[mid] < num) {
max = mid + 1;
} else {// arr[mid] == value
document.write(mid);
break;
}
//判断查找的元素在数组中不存在的情况
if (max < min) {
document.write(-1);
break;
}
}
最新文章
- js实现复选框全选
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制
- 把php上传sae问题要使用IO
- jQuery 利用 $.getJson() 实现跨域
- 关于hive的存储格式
- mig_ddr4_ultrascale
- php中的$_SERVER从哪来
- Harris Corner(Harris角检测)
- oop6 栈 界面
- 如何进行服务器Linux系统下的ext文件系统修复
- 一文搞懂TCP与UDP的区别
- SOCKET.IO 的用法 系统API,
- 浅析 @PathVariable 和 @RequestParam(转发,非原创)
- 椭圆曲线签名算法的v的定义
- linux每日命令(24):Linux 目录结构
- redis数据持久化的两种方式
- 前端安全 -- XSS攻击
- ionic1项目中 ion-slide轮播用ng-repeat遍历数据后自动循环出问题
- python-正则表达式练习题
- C#委托总结-匿名方法&;Lambda表达式