molily: grosse arrays schnell durchsuchen

Beitrag lesen

Hallo,

Wie sieht denn eine binäre Suche mit Javascript aus?

Ich habe keine Informatikausbildung, aber ich denke einmal, in etwa so:

var array = new Array();  
for (var i = 0, random; i < 1000; i++) {  
 random = Math.random()  
 array.push(random);  
}  
array.sort();  
//document.write("<p>" + array.join("<br>") + "</p>");  
  
suchwert = random;  
document.write("<p>suchwert: " + suchwert + "</p>");  
  
function suche (array, suchwert, index_start, index_end) {  
 index_start = index_start || 0;  
 index_end = index_end || array.length;  
  
 document.write("<p>suche " + index_start + "-" + index_end + "<br>");  
  
 index_mitte = Math.floor(index_start + ((index_end - index_start) / 2));  
 document.write("mitte: " + index_mitte + " : " +  array[index_mitte] + "<br>");  
 if (array[index_mitte] == suchwert) {  
  document.write("gefunden");  
  return true;  
 }  
 if (suchwert < array[index_mitte]) {  
  document.write("suchwert kleiner<br>");  
  return suche(array, suchwert, index_start, index_mitte);  
 } else {  
  document.write("suchwert größer<br>");  
  return suche(array, suchwert, index_mitte, index_end);  
 }  
 return false;  
}  
  
document.write("<p>" + suche(array, suchwert) + "</p>");

Das ist natürlich, wenn man einen geordneten Array hat, viel schneller als das bloße Durchlaufen mit einer for-Schleife.

Mathias