С деревом все в порядке, но вам не нужно помещать ваш массив в многомерный массив.Вот мой способ сделать это с большими массивами в JS.
Вам нужно отсортировать массив.
Перейти к середине массива.Цикл: Если элемент массива меньше, чем tosearch, переходите к середине верхней половины;Иначе, если элемент массива больше, чем tosearch, переходите к середине нижней половины;иначе ты нашел это.и т. д.
var maxstep=Math.abs((Math.log(0.5)-Math.log(array.length))/Math.log(2)-1);
function searchinterval(tosearch,array){
var len=array.length,
pos=range=len/2,
index=Math.round(pos),
maxstep=.49999;
for(var i=0;i<=maxstep;i++){
range/=2;
if(tosearch<array[index]){
pos-=range;
}
else if(tosearch>array[index]){
pos+=range;
}
else{
return index;
//you found it
}
index=Math.round(pos);
}
return false;
}
Если поиск в массиве отсутствует, эта функция работает медленно.Имеется в виду семь циклов для длины массива 200 Я не уверен с максимальным количеством шагов или размером шага.
PS: Думаю, я нашел максимум шагов: (спасибо Maxima)
Log(0.5)-Log(array_length))/Log(2) -1);