Insérer par valeur

On veut construire, à partir d’un ensemble de n élément, une nouvel ensemble de longueur n+1 comprenant un nouvel élément inséré avant ou après un élément donné. L’algorithme est formé de trois actions:

  • Copie des k-1 premiers élément de l’ensemble dans un nouvel ensemble
  • Insertion de l’élément choisi dans le nouvel ensemble
  • Copie des derniers éléments de l’ensemble dans un nouvel ensemble

Si la position n’existe pas l’algorithme renvoie un nouvel ensemble inchangé.

Remarques.
  1. Pour simplifier les algorithmes présentés, on choisi de n’insérer qu’un seul élément à la fois.
  2. On retrouve ici le problème d’accès par valeur à un élément d’un ensemble.
  3. Les schémas présentés nécessitent la création d’une nouvel ensemble.
Objectif:            -- Insérer un élément après ou avant l'élément sélectionné

Paramètres:
   ensemble          -- ensemble de départ
   nouvelEnsemble    -- nouvel ensemble comprenant l'insertion d'un élément
   avantElement      -- élément à insérer avant
   apresElement      -- élément à insérer après

Résultat             
   -- Le nouvel ensemble, si l'insertion n'est pas possible 
   -- il contient les élément de l'ensemble de départ 
Remarque:            
   -- L'ensemble de départ n'est pas modifié. 
   -- Un nouvel ensemble est créé

Insertion d’un élément avant

InsererParValeurAvant ensemble Ensemble
   , avantElement Element
   , elementAinserer Element 
   -> Ensemble

   existe <- Faux
   nouvelEnsemble <- [ensemble]
   Initialiser ensemble
   Enumerer ensemble ET NON existe
      element >- Element_Courant ensemble 
      existe <- element = avantElement
      Si existe nouvelEnsemble <- elementAinserer
      Element_Suivant ensemble
      nouvelEnsemble <- element
   Fin
   Enumerer ensemble
      element >- Element_Courant ensemble 
      nouvelEnsemble <- element
      Element_Suivant ensemble
   Fin
<- nouvelEnsemble
Fin

Insertion d’un élément après

InsererParValeurApres ensemble Ensemble
   , apresElement Element
   , elementAinserer Element 
   -> Ensemble 

   existe <- Faux 
   nouvelEnsemble <- [ensemble] 
   Initialiser ensemble 
   Enumerer ensemble ET NON existe 
      element <- Element_Courant ensemble 
      existe <- element = apresElement
      nouvelEnsemble <-element 
      Element_Suivant ensemble 
   Fin 
   Si existe
      nouvelEnsemble <- elementAinserer 
      Enumerer ensemble 
         element <- Element_Courant ensemble 
         nouvelEnsemble <- element
         Element_Suivant ensemble
      Fin 
   Fin 
<- nouvelEnsemble 
Fin

Traduction des algorithmes en: Swift, Julia

copyright A rchitectures A pplicatives A vancées A3-Soft

A3soft