मुझे लगता है कि आप एक बाइनरी खोज दिनचर्या का उपयोग करना चाहते हैं। एक द्विआधारी खोज दिनचर्या है जबकि एक रैखिक खोज औसतन है।
फॉर्म चुनने के लिए कई भिन्नताएं हैं। यहाँ एक मैं this article में पाया:
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;
}
या एक असंख्य अलग अलग भाषाओं में एक द्विआधारी खोज समारोह है कि this article से इस सरल देख संस्करण।
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;
}
वहाँ भी कोड here के साथ गूगल बंद में एक द्विआधारी खोज है।
और, बाइनरी खोज एल्गोरिदम Wikipedia पर कैसे काम करता है इसका एक अच्छा विवरण है।
निश्चित रूप से जाने का रास्ता। http://en.wikipedia.org/wiki/Binary_search –
http://www.nczonline.net/blog/2009/09/01/computer-cience-in-javascript-binary-search/ – Pete
ठीक है, धन्यवाद टिप! – frenchie