Différences entre versions de « Js algo td4 »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
Ligne 75 : Ligne 75 :
 
== Exercice 3 ==
 
== Exercice 3 ==
 
Écrire la fonction ''get_value'' qui prend en paramètres le tableau ''T'' ainsi qu'une chaîne de caractères, ''x''. Cette fonction, qui utilise la recherche par dichotomie, renvoie un tableau qui correspond à la moitié du tableau ''T'' où se trouverait la valeur ''x'', ou bien, la l'index de la valeur recherchée.
 
Écrire la fonction ''get_value'' qui prend en paramètres le tableau ''T'' ainsi qu'une chaîne de caractères, ''x''. Cette fonction, qui utilise la recherche par dichotomie, renvoie un tableau qui correspond à la moitié du tableau ''T'' où se trouverait la valeur ''x'', ou bien, la l'index de la valeur recherchée.
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px;visibility:hidden">
 +
<big>Solution</big>
 +
<source lang="javascript" style="border:1px solid black;font-size:130%" class="mw-collapsible-content">
 +
function get_half(T, x) {
 +
var half = Math.round(T.length / 2);
 +
console.log(half);
 +
var half_value = T[half];
 +
var compare = compare_string(x, half_value);
 +
var tab_start;
 +
var tab_end;
 +
var j = 0;
 +
if (compare == 0) {
 +
console.log("TROUVE : "+half);
 +
return half;
 +
} else {
 +
if (compare < 0) {
 +
console.log("MOITIE INFERIEUR");
 +
tab_start = 0;
 +
tab_end = half;
 +
} else {
 +
console.log("MOITIE SUPERIEUR");
 +
tab_start = half;
 +
tab_end = T.lenght;
 +
}
 +
var resultat = new Array();
 +
for (var i = tab_start; i < tab_end; i++) {
 +
resultat[j] = T[i];
 +
j++;
 +
}
 +
return resultat;
 +
}
 +
}
 +
</source>
 +
</div>
  
 
== Exercice 4 ==
 
== Exercice 4 ==

Version du 30 avril 2014 à 07:41

Introduction

En algorithmique, la recherche dichotomique relève du principe diviser pour régner qui est ici pris au pied de la lettre puisque l'intervalle de recherche est divisé en deux sous-intervalles de même taille.

À chaque étape de l'algorithme, on calcule le milieu m de l'intervalle de recherche et on compare la valeur avec la valeur au milieu du tableau.

Au départ . Trois situations se présentent :

  1.  : la recherche est terminée.
  2.  : il faut poursuivre la recherche dans la moitié gauche de l'intervalle .
  3.  : il faut poursuivre la recherche dans la moitié droite de l'intervalle .

Dans les deux derniers cas, la recherche continue avec le même procédé, on divise à nouveau l'intervalle en deux moitiés et ainsi de suite jusqu'à ce que l'intervalle de recherche soit réduit à un seul terme.

L'algorithme est la stricte application de ce principe.

Application

Soit T un tableau de noms:

var T = new Array("Alain","Antoine", "Bernard", "Colin", "Christine","François", "Guy","Gérard", "Léa","Léon","Louis","Nathalie","Serge","Sylvie","Sylvain","Vincent");

Exercice 1

Écrire la fonction compare_char qui prend en paramètres deux caractères a et b et qui renvoie:

  • une valeur négative si a < b;
  • 0 si a == b;
  • une valeur positive si a > b;

Exercice 2

Écrire la fonction compare_string qui prend en paramètres deux chaînes de caractères x et y et qui renvoie:

  • une valeur négative si a < b;
  • 0 si a == b;
  • une valeur positive si a > b;

Cette fonction doit comparer chacune des lettres des deux chaînes tant qu'il y a égalité !

Pour cela, vous pouvez vous aider de la fonction String.charAt(num) dont voici la documentation:

Syntax

string.charAt(num)

The charAt() method returns the character located at the indexed, num, position passed. This indexing is done from left to right starting with the 0 (zero) position.
If the num passed is not a valid index in the string, -1 is returned.

Exercice 3

Écrire la fonction get_value qui prend en paramètres le tableau T ainsi qu'une chaîne de caractères, x. Cette fonction, qui utilise la recherche par dichotomie, renvoie un tableau qui correspond à la moitié du tableau T où se trouverait la valeur x, ou bien, la l'index de la valeur recherchée.

Exercice 4

Écrire la fonction main qui prend en paramètre une chaîne de caractères name et qui utilise les fonctions précédentes pour retourner:

  • l'index de la chaîne name;
  • la phrase suivante La chaîne n'existe pas.


Pour tester le type d'une variable, vous pouvez utiliser le mot clé instanceof.

Par exemple:

var T = new Array();

if(T instanceof Array){
   console.log("Je suis un tableau");
}

Affichera Je suis un tableau.