博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分查找法查找数组元素下表
阅读量:5027 次
发布时间: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

你可能感兴趣的文章
Top命令内存占用剖析
查看>>
转 网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO
查看>>
求带分数(蓝桥杯)
查看>>
Retrofit 入门学习
查看>>
Spring Boot学习笔记
查看>>
laravel 集合接口
查看>>
java.exe进程来源排查录
查看>>
C++实现KMP模式匹配算法
查看>>
JSONObject与JSONArray的使用
查看>>
除了《一无所有》,我一无所有
查看>>
每日英语:China Seeks to Calm Anxiety Over Rice
查看>>
C++中struct和class的区别 [转]
查看>>
C++ ofstream和ifstream详细用法
查看>>
Mysql 连接查询 Mysql支持的连接查询有哪些
查看>>
Hive Streaming 追加 ORC 文件
查看>>
打开Apache自带的Web监视器
查看>>
eclipse插件
查看>>
Android笔记:通过RadioGroup/RadioButton自定义tabhost的简单方法
查看>>
ELCSlider
查看>>
XCode工程中 Targets详解
查看>>