Home >Backend Development >PHP Tutorial >javascript - How to quickly find the size of quantity a between the key name and the key name in array b

javascript - How to quickly find the size of quantity a between the key name and the key name in array b

WBOY
WBOYOriginal
2016-07-06 13:51:57893browse

Variable a = 8 and array b = array(1,3,5,7,8.9,9,11.3);

Assume that the length of the array is unknown, the variable value is unknown, and the array key values ​​are arranged from small to large
How to quickly find the size of quantity a between the key name and the key name in array b

eg: a=8, between b[4] and b[5]

Reply content:

Variable a = 8 and array b = array(1,3,5,7,8.9,9,11.3);

Assume that the length of the array is unknown, the variable value is unknown, and the array key values ​​are arranged from small to large
How to quickly find the size of quantity a between the key name and the key name in array b

eg: a=8, between b[4] and b[5]

The length is unknown...it's unlikely...isn't it just b.length?...
Is there any better way to query this kind of query besides binary division...

Or you can encapsulate a class yourself, do a mapping when the array is created, and group the data according to size. How to group depends on your requirements, which can greatly improve the speed.
For example, to be simpler, group by integers, like this:

<code>class ClassA extends Array {
    constructor(...args) {
        super(...args);
        this.hash = [];
        for(let i = 0; i < this.length; i++) {
            if(!this.hash[Math.floor(this[i])]) this.hash[Math.floor(this[i])] = i;
        }
    }
}</code>
The

array is still the same array, just add a hash, which represents the starting subscript of the integer segment. For example, if you want to query the number 8.5, then you only need to query this.hash[Math.floor(8.5)] and this.hash[Math.floor(8.5) 1], two subscripts The data between the two hashes is enough. If the two hashes are empty, then just search forward and backward until the value is found. If the data is too sparse, you can make another hash for this hash and record the valid integer segments. Anyway, it is just space for time.

Obviously using binary search

Implementation method:

<code>1、先排序(冒泡、快速排序等,本题已优先排列好)
2、插入需要判断的元素,再排序
3、返回插入数组所在的键值</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn