博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分查找法查找数组元素下表
阅读量:5025 次
发布时间:2019-06-12

本文共 1705 字,大约阅读时间需要 5 分钟。

二分查找法查找数组元素下表

 这方法是在学习C++的时候看到的 然后我把他改装成js的了,算法不分语言的,

使用该方法前要对数组进行排序, 下面对数组排序

/** 对数组排序 冒气泡发* + 张建军 +**    list 数组*    ntype 0为正序*/function ArraySort(list, ntype) {    var temp = "";    var max = 0;    while (max < list.length) {        for (var j = max + 1; j < list.length; j++) {            if (list[j] > list[max] && ntype == "1") {                temp = list[max];                list[max] = list[j];                list[j] = temp;            }            else if (list[j] < list[max] && ntype == "0") {                temp = list[max];                list[max] = list[j];                list[j] = temp;            }        }        max = max + 1;    }    return list;}

上面的排序是普通的冒气泡法,排序后然后就可以使用下面的方法了

下面的当长度小于3的的是就不执行了,因为长度太小了是用普通的方法还快一些

/** 匹配数组元素位置,二分查找法,使用前需要对数组排序* + 张建军 +**    list 数组*    val 查找元素*    找到即返回下标,没找到反回插入点*/function SearchKey(list, val) {    //判断正烦序    var sort = 0; //0 默认正序    if (list.length >= 3) {        if (list[0] > list[list.length - 1]) {            sort = 1;        }    }    var intlow = 0;    var intHigh = list.length - 1;    var result = "";    while (intHigh >= intlow) {        var intMid = parseInt((intlow + intHigh) / 2);        if (val > list[intMid]) {            if (sort == 0) {                intlow = intMid + 1            }            else {                intHigh = intMid - 1;            }        }        else if (val == list[intMid]) {            return intMid;        }        else if (val < list[intMid]) {            if (sort == 0) {                intHigh = intMid - 1;            }            else {                intlow = intMid + 1            }        }    }    return -intlow;}

 

转载于:https://www.cnblogs.com/sxmny/archive/2012/05/08/2489513.html

你可能感兴趣的文章
10 华电内部文档搜索系统 search03
查看>>
[HIHO1149]回文字符序列(dp)
查看>>
[HDU1402]A * B Problem Plus(FFT)
查看>>
[CF803C] Maximal GCD(gcd,贪心,构造)
查看>>
逆时针旋转的矩阵变换
查看>>
第10周15/16/17
查看>>
【数据库】SQL两表之间:根据一个表的字段更新另一个表的字段
查看>>
四六级作文常见错误解析(转载)
查看>>
Tomcat
查看>>
./是当前目录 ../是当前的上一级目录。上上级就是../../一般绝对路径时候常用...
查看>>
linux支持FTP和SFTP服务【1】
查看>>
树的递归与非递归遍历方法
查看>>
每天一个Linux命令(6):rmdir命令
查看>>
oracle连接的三个配置文件(转)
查看>>
Vim配置文件(Vimrc)
查看>>
RecyclerView 局部刷新(获取viewHolder 去刷新)
查看>>
PHP表单(get,post)提交方式
查看>>
使用vbs或者bat脚本修改IE浏览器安全级别和选项
查看>>
Silverlight入门
查看>>
Silverlight动态调用WEBSERVICE,WCF方法
查看>>