Ich denke, dass Sie eine binäre Suchroutine verwenden möchten. Eine binäre Suchroutine ist , während eine lineare Suche im Durchschnitt ist.
Es gibt viele Variationen, um Form zu wählen. Hier ist ein ich in this article gefunden:
function binarySearch(items, value){
var startIndex = 0,
stopIndex = items.length - 1,
middle = Math.floor((stopIndex + startIndex)/2);
while(items[middle] != value && startIndex < stopIndex){
//adjust search area
if (value < items[middle]){
stopIndex = middle - 1;
} else if (value > items[middle]){
startIndex = middle + 1;
}
//recalculate middle
middle = Math.floor((stopIndex + startIndex)/2);
}
//make sure it's the right value
return (items[middle] != value) ? -1 : middle;
}
Oder diese einfache aussehende Version von this article, die eine binären Suchfunktion in zig verschiedenen Sprachen hat.
function binary_search_iterative(a, value) {
var lo = 0, hi = a.length - 1, mid;
while (lo <= hi) {
mid = Math.floor((lo+hi)/2);
if (a[mid] > value)
hi = mid - 1;
else if (a[mid] < value)
lo = mid + 1;
else
return mid;
}
return null;
}
Es gibt auch eine binäre Suche in Google-Verschluss mit dem Code here.
Und eine gute Beschreibung, wie der binäre Suchalgorithmus funktioniert Wikipedia.
Auf jeden Fall der Weg zu gehen. http://en.wikipedia.org/wiki/Binary_search –
http://www.nczonline.net/blog/2009/09/01/computer-science-in-javascript-binary-search/ – Pete
ok, danke für die Spitze! – frenchie