Bonjour, et bonne année à tous.
Je viens ici car j"'ai un problème avec une annale de concours : Informatique commune 2018, précisément à la 14 qui porte sur un algorithme de tri rapide imposé :
les arguments sont une liste à trier et 2 indices.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 def triRapide ( liste ,g , d ) : #pivot = # À compléter i = g j = d while True : while i <= d and liste [ i ][0] < pivot : i = i +1 while j >= g and liste [ j ][0] > pivot : j = j -1 if i > j : break if i < j : liste [ i ] , liste [ j ] = liste [ j ] , liste [ i ] i = i +1 j = j -1 if g < j : triRapide ( liste ,g , j ) if i < d : triRapide ( liste ,i , d )
la liste à trier est une liste L de 2 listes; représentant la hauteur pour la première (liste h) et la période pour la seconde (liste p) de différentes vagues triées dans l'ordre chronologique.
Le but de la question est de compléter la ligne 2 (pivot) et de déterminer la valeur des indices g et d lors du premier appel (fonction récursive) pour trier la liste L selon les valeurs croissantes de la liste h. la liste p doit donc aussi être modifiée pour rester cohérent.
Mon problème, c'est que je comprend pas du tout où veut en venir cette fonction : boucle infinie rompue par un brak, alors que mon prof s'énerve dès qu'on utilise des break, un tri présenté comme "tri rapide" alors qu'il n'a rien à voir avec mon cours, 3 paramètres, et une fonction récursive sans return. C'est courant, les fonctions récursives sans return ? moi c'est la première fois que j'en vois. :/
bref, je coince. vous pouvez m'aider à réponde à cette question s'il vous plaît ?
Partager