Problème algorithme dichotomique
Résolu/Fermé
a.b
-
Modifié le 25 janv. 2021 à 19:55
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 25 janv. 2021 à 20:40
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 25 janv. 2021 à 20:40
A voir également:
- Problème algorithme dichotomique
- Logiciel algorithme gratuit - Télécharger - Édition & Programmation
- Code ascii algorithme - Guide
- Ecrire un algorithme qui calcule le produit de deux nombres - Forum Programmation
- Remplir une matrice algorithme - Forum Pascal
- Ecrire un algorithme qui permet de resoudre ax²+bx+c=0 - Forum Programmation
1 réponse
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
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));