Aller au contenu

Index des sujets 2023

Corrigé sujet 14 - Année : 2023

Sujet 14 - 2023

Exercice 1

1
2
3
4
5
6
def recherche(elt,tab):
  ''' Renvoie l'indice de la première occurrence de elt dans tab si elt est dans tab et -1 sinon'''
  for i in range(len(tab)):
    if tab[i]==elt:
      return i
  return -1

Commentaires

Exercice classique de recherche dans une liste, un parcours par les indices s'impose puisqu'on renvoie la position de l'élément dans la liste.

Exercice 2

Attention

Le code fourni contient une erreur d'indentation

1
2
3
4
5
6
7
8
9
def insere(a, tab):
    l = list(tab) #l contient les mêmes éléments que tab
    l.append(a) 
    i = len(tab)-1 #(1)
    while a < l[i] and i >= 0:  #(2)
      l[i+1] = l[i] #(3)
      l[i] = a
      i = i - 1 #(4)
    return l
  1. C'est l'indice auquel se trouve l'élément précédant celui qui a été inséré. Au début on insère à la fin (en position len(tab)) donc celui qui précède a l'indice len(tab)-1.
  2. On échange a avec le précédent tant qu'il est inférieur et que le début de liste n'est pas atteint.
  3. Cette ligne et la suivante permettent d'effectuer l'échange.
  4. Décrémentation de la position à tester.

Attention

  • Pour compléter le code, il faut comprendre l'algorithme mis en oeuvre pour insérer au bon emplacement :
    1. Ajouter à la fin
    2. Remonter l'élément en l'échangeant avec son voisin de gauche tant qu'il est inférieur à ce dernier
  • La ligne 2 a pour but de faire une copie du tableau tab afin de ne pas le modifier. On aurait pu utiliser copy.