博客
关于我
强烈建议你试试无所不能的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

你可能感兴趣的文章
BitmapFactory.Options避免 内存溢出 OutOfMemoryError的优化方法
查看>>
Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片
查看>>
DNGuard 免费的DotNet加密保护工具 V1.0
查看>>
编程中的命名设计
查看>>
easyui form validate总是返回false原因
查看>>
在(CListView)列表视图中添加右键菜单的方法
查看>>
自定义服务器控件(处理不同的浏览器)
查看>>
解决IE6-IE7下li上下间距
查看>>
聚集索引更新后会不会马上重新排序
查看>>
幸运大抽奖
查看>>
Post请求
查看>>
Java排序算法(三):直接插入排序
查看>>
Python 列表 min() 方法
查看>>
HSF源码阅读
查看>>
【死磕jeesite源码】Jeesite配置定时任务
查看>>
程序8
查看>>
TBluetoothLEDevice.UpdateOnReconnect
查看>>
poj3517
查看>>
iphone http下载文件
查看>>
poj 1195:Mobile phones(二维树状数组,矩阵求和)
查看>>