Lequel de ces mots est le plus long :
table
ordinateur
chaise
Facile. Mais pouvez-vous expliquer votre méthode ?
Plus une tâche est facile, plus elle peut être difficile à expliquer. Surtout à un ordinateur, idiot et incapable d’intuition ou de prise d’initiative, et qui plus est au travers d’un langage de programmation.
Essayons quand même.
variables: liste_de_mots, mot_courant, mot_le_plus_long
mot_le_plus_long = ""
Pour chaque mot_courant dans liste_de_mots:
Si longueur(mot_courant) > longueur(mot_le_plus_long):
mot_le_plus_long = mot_courant
Fin Si
Fin Pour
Tâche plus complexe : trier la liste des mots.
table
ordinateur
chaise
Facile. Mais pouvez-vous expliquer votre méthode ?
Essayez quand même ! Y a-t-il plusieurs méthodes ? Plusieurs solutions (c’est-à-dire plusieurs listes différentes pouvant être considérées comme triées) ? Votre méthode fonctionne-t-elle encore avec des listes plus longues ?
Qui n’a jamais vu d’explorateur de fichiers, de tableur, de liste de sportifs ou d’élèves ?
Nom | Taille en ko | Type | Date |
---|---|---|---|
mondocument | 130 | .odt | 2014-03-19 |
tondocument | 30 | .ods | 2012-01-12 |
sondocument | 240 | .odt | 2013-03-09 |
sonfichier | 10 | .txt | 2014-02-11 |
fichierson | 13130 | .mp3 | 2013-03-28 |
Selon Cormen, Leiserson, Rivest, and Stein, un quart des cycles serait consacrés au tri.
Au niveau du lycée, on pourrait dire que les algorithmes de tri sont les premiers parmi les algorithmes « avancés ».
Ils constituent quasiment une science à part entière, et sont utilisés comme base pédagogique pour accéder à divers concepts.
Quelques liens vers des articles Wikipedia :
Un navigateur, avec document.write()
ou console.log()
, voire
nodejs avec console.log()
. Pour un code portable :
print = console.log
print = document.write
Pour visualiser graphiquement, il serait possible d’utiliser http://d3js.org/.
Pour visualiser graphiquement, il est possible d’utiliser ce squelette.
liste = [3, 2, 0, 4, 1]
print(liste)
print(liste[0])
print(liste[4])
liste[4] = 5
print(liste[4])
donnera :
[3, 2, 0, 4, 1]
3
1
5
tab = [3, 2, 0, 4, 1]
console.log(liste)
console.log(liste[0])
console.log(liste[4])
tab[4] = 5
console.log(liste[4])
donnera :
[3, 2, 0, 4, 1]
3
1
5
int[] tab = new int[5];
tab[0] = 3;
tab[1] = 2;
tab[2] = 0;
tab[3] = 4;
tab[4] = 1;
println(tab);
println(tab[0]);
println(tab[4]);
tab[4] = 5;
println(tab[4]);
donnera :
[0] 3
[1] 2
[2] 0
[3] 4
[4] 1
3
1
5
liste = [3, 2, 0, 4, 1]
for elt in liste:
print(elt)
et
liste = [3, 2, 0, 4, 1]
for i in range(len(liste):
print(elt)
donneront :
3
2
0
4
1
tab = [3, 2, 0, 4, 1]
for(var i = 0; i < tab.length; i++) {
console.log(tab[i])
}
donnera :
3
2
0
4
1
int[] tab = new int[5];
tab[0] = 3;
tab[1] = 2;
tab[2] = 0;
tab[3] = 4;
tab[4] = 1;
for(int i = 0; i < tab.length; i++) {
println(tab[i]);
}
donnera :
3
2
0
4
1
En pseudo-code :
// Initialisations:
a <- 2
b <- 5
// Algo:
auxi <- a // auxi est une variable auxiliaire
a <- b
b <- auxi
Tracer cet algorithme pour en deviner le rôle.
Après avoir choisi un langage de programmation, implémenter les algorithmes suivants :
Ces videos et ce squelette pourront vous aider.
Cette video et ce squelette pourra vous aider.
Remplacer les nombres par des mots (plus facile en Python et Javascript). Quel ordre obtient-on (pour pas cher) ? Comment trier les mots en fonction de leur longueur ?
Comment un dictionnaire trie les noms à particule ? Cet ordre est-il respecté ?
Les critères sont innombrables :
Les algorithmes ont souvent des situations de départ de prédilection. Voir http://www.sorting-algorithms.com.