Problème algorithme dichotomique
Résolu/Fermé
a.b
-
Modifié le 25 janv. 2021 à 19:55
jordane45 Messages postés 37267 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mars 2023 - 25 janv. 2021 à 20:40
jordane45 Messages postés 37267 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 mars 2023 - 25 janv. 2021 à 20:40
1 réponse
jordane45
Messages postés
37267
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 mars 2023
4 550
25 janv. 2021 à 20:40
25 janv. 2021 à 20:40
Bonjour,
Pour faire une recherche par dichotomie.. il faudrait déjà que ton tableau soit trié et ne contienne pas de valeurs en doublons.
En plus, dans ton code actuel, tu ne sorts jamais... même si tu trouves le bon résultat...
Donc, ben.. tu fais une boucle infinie
Essaye ça
Pour faire une recherche par dichotomie.. il faudrait déjà que ton tableau soit trié et ne contienne pas de valeurs en doublons.
En plus, dans ton code actuel, tu ne sorts jamais... même si tu trouves le bon résultat...
Donc, ben.. tu fais une boucle infinie
Essaye ça
let tab = [1,2,3,4,5,6,7,8]; function findM(tbl) { return Math.floor(tbl.length / 2) } var m = 0; var milieu = findM(tab); function search(tbl,x,m) { console.log(tbl,x,m); let tm = typeof(tbl[m])!='undefined' ? tbl[m] : null; if(!tm) return false; if(tm == x){ console.log("Valeur trouvée à l'indice ",m); return true; }else if(x < tm) { let leftTab = tbl.slice(0,m); let ml = findM(leftTab); search(leftTab,x,ml); } else { let rightTab = tbl.slice(m,tbl.length); let mr = findM(rightTab); search(rightTab,x,mr); } } console.log(search(tab,2,milieu));