jvascript 顺序查找和二分查找法
第一种:顺序查找法
中心思想:和数组中的值逐个比对!
/*
* 参数说明:
* array:传入数组
* findVal:传入需要查找的数
*/
function Orderseach(array,findVal){
var temp = false; //控制开关
for(var i =0;i<array.length;i++){
if(array[i] == findVal){ //逐个匹配是否相等
temp = true; //如果找到,temp设置为true;
return i; //返回在数组的位置
}
}
if(!temp){ //如果没有找到
return '没找到';
}
} //调用:
var arr = [5,7,66,78,99,103,126,203,1];
document.write(Orderseach(arr,103)); //总结:很简单的代码,大神请忽视~~~
第二种:二分查找法
主要思想是:(设查找的数组区间为array[left, right])
- 确定该期间的中间位置middle。
- 将查找的值findVal与array[middle]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。
注意: 使用二分查找的数组必须是有序的
二分法查找 ---递归
//二分法查找 ---递归
function binarySeach(array,findVal,left,rigth){
var middle = Math.round((left + rigth) / 2); //确定中间的那个数
if(left > rigth){ //如果左边的数大于右边的数,证明没有找到数
document.write('找不到');
return;
};
if(findVal > array[middle]){ //像右查找
binarySeach(array,findVal,middle +1,rigth);
}else if(findVal < array[middle]){ //像左查找
binarySeach(array,findVal,left,middle -1);
}else{//显示
document.write(middle);
}
};
调用:
binarySeach(arr,204,0,arr.length -1);
二分法查找 ---函数循环
//二分法查找 -- 循环
function binarySeach1(array,findVal){
var left = 0; //数组从下标为0开始
var right = array.length -1; //数组结束
while(left <= right){ //左边不能大于右边
var middle = Math.round((left + right)/2); //取中间
if(findVal == array[middle] ){ //
return middle;
}else if(findVal < array[middle] ){//像左查找
right = middle - 1;
}else if(findVal > array[middle]){//像右查找
left = middle + 1;
}
}
return '找不到';
};
调用:
binarySeach1(arr,104);
jvascript 顺序查找和二分查找法的更多相关文章
- 各种查找算法的选用分析(顺序查找、二分查找、二叉平衡树、B树、红黑树、B+树)
目录 顺序查找 二分查找 二叉平衡树 B树 红黑树 B+树 参考文档 顺序查找 给你一组数,最自然的效率最低的查找算法是顺序查找--从头到尾挨个挨个遍历查找,它的时间复杂度为O(n). 二分查找 而另 ...
- Java中常用的查找算法——顺序查找和二分查找
Java中常用的查找算法——顺序查找和二分查找 神话丿小王子的博客 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位 ...
- C语言查找算法之顺序查找、二分查找(折半查找)
C语言查找算法之顺序查找.二分查找(折半查找),最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 顺序查找 /*顺序查找 顺序查找是在一个已知无(或有序)序队列中找出与给定关键字相同的 ...
- Java顺序查找、二分查找
Java顺序查找.二分查找 查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,只需要一个个对比即可,但其实效率很低. 顺序查找 动图演示 详细代码 // 顺序查找 public st ...
- 【PHP数据结构】线性查找与二分查找
欢迎来到查找的世界,在学习完各种数据结构之后,总算走到了这一步,不知道大家有什么感想呢?反正我是边学边忘,现在让我去说说图的那几个算法还是在蒙圈的状态中.不过学习嘛,就是一步一步的来,暂时搞不懂的东西 ...
- List<T>线性查找和二分查找BinarySearch效率分析
今天因为要用到List的查找功能,所以写了一段测试代码,测试线性查找和二分查找的性能差距,以决定选择哪种查找方式. 线性查找:Contains,Find,IndexOf都是线性查找. 二分查找:Bin ...
- Java基础知识强化60:经典查找之二分查找
1. 二分查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 比较 ...
- python---顺序查找,二分查找
比较熟悉了. 但要注意细节, 二分查找时,普通方法mid处理,递归时,mid处理. # coding = utf-8 def sequential_search(a_list, item): pos ...
- Python查找算法之 -- 列表查找和二分查找
一.列表查找:从列表中查找指定元素 输入:列表.待查找元素 输出:元素下标或未查找到元素 二.列表查找方式 顺序查找 : 从列表的第一个元素开始遍历,知道找到为止.时间复杂度O(n) 二分查找 :从有 ...
随机推荐
- 玩儿转物联网IoT - 在Beagle Bone Black上运行node.js 程序
物联网(IoT)技术方兴未艾,智能手环,智能血压计,智能眼镜甚至智能鞋垫都开始进入我们的生活,各种智能设备层出不穷,世界已经到了一个"人有多大胆,地有多大产"的时代,不玩儿点物联网 ...
- 整理UIImagePickerController问题
[assetsLibrary addAssetsGroupAlbumWithName:@"iOSDevTip1" resultBlock:^(ALAssetsGroup *grou ...
- android Activity runOnUiThread() 方法的使用
利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给Activity.runOnUiThr ...
- 关于JS交互--调用h5页面,点击页面的按钮,分享到微信朋友圈,好友
关于js交互,在iOS中自然就想到了调用代理方法 另外就是下面的,直接上代码了: 如果你的后台需要知道你的分享结果,那么,就在回调里面调用上传到服务器结果的请求即可
- jquery双向列表选择器DIV模拟版
前段时间项目需要用到双向列表选择,想直接用select,结果发现某些样式不支持,只好用div模拟了以下,功能基本实现能用了,需要其他功能自己加上,譬如列表里展示多列数据等. select版链接:htt ...
- JAVA并发编程J.U.C学习总结
前言 学习了一段时间J.U.C,打算做个小结,个人感觉总结还是非常重要,要不然总感觉知识点零零散散的. 有错误也欢迎指正,大家共同进步: 另外,转载请注明链接,写篇文章不容易啊,http://www. ...
- iOS系列 基础篇 05 视图鼻祖 - UIView
iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...
- MySQL 之 Metadata Locking 研究
MySQL5.5 中引入了 metadata lock. 顾名思义,metadata lock 不是为了保护表中的数据的,而是保护 database objects(元数据)的.包括表结构.schem ...
- Windows 10不能拨L2TP协议的VPN
之前是Windows 10版本1607版本14393.102升级14393.187过后,突然出现不能拨公司防火墙的L2TPVPN了. 网上众说纷纭,原来遇到这个问题的人真不少,不过我是第一次遇到.结合 ...
- [游戏开发-学习笔记]菜鸟慢慢飞(九)- NGUI- UIPanel(官方说明翻译)
我自己笔记是做在OneNote上,直接复制粘贴过来变成图片了,效果好像还可以. 机器翻译,我自己看了一下,改了一部分.