Les structures de données séquentielles contiguës

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Tris.
Chap. 4 Recherche en Table
Le langage Z Pr ZEGOUR DJAMEL EDDINE
Introduction: Concepts de la programmation
Piles, files et listes: notions théoriques
Sensibilisation à l’Algorithmique
Au programme du jour …. Un peu plus de structures de données
Introduction à l’Algorithmique
Sensibilisation à l’Algorithmique et structure de données
Les Algorithmes de tri.
Chap. 1 Structures séquentielles : listes linéaires
Algorithmique et Structures de données
Initiation à la programmation et algorithmique cours 3
Utilisation des tableaux
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
UE NFA006 STRUCTURES DE DONNEES
Structures de données linéaires
A B D A B D LSC avec « sentinelle »
Les structures de données arborescentes
II. Chaînage, SDD séquentielles
Bibliothèque standard du C++
II. Chaînage, SDD séquentielles
Structures de données IFT-2000
1 Exercice : longueur d’un mot est-elle paire ?  Test fonctionnel  Quel ensemble de valeur choisir / spécification  Test structurel  Soit le code d’un.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.

Standard Template Library
1 Le fichier séquentiel Suite finie déléments dun même type Exemples : – fichier des livres dune bibliothèque – enregistrements sur un magnétophone – ensemble.
326 UMLV Méthodes de classement destinées à de grandes masses de données Applicables à des fichiers séquentiels Complexité : évaluée surtout en nombre.
Exemple : (fichier “ automobile ”)
Pour créer un atelier il convient dans un premier temps d’organiser ses classes Et d’ouvrir« Console Enseignant » Sélectionner mes classes Sélectionner.
Structures de données IFT-2000

Les Types de données complexes
Algo-Prog en Ada TD2 2 IMACS Romaric GUILLERM
Structures de données IFT-2000
Le langage C Structures de données
Partage et collaboration
ALGORITHME DE TRI Le tri par insertion.
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Ch. PAUL - Piles et Files à l'aide de listes chainées
4 Introduction des objets. Les chaînes et tableaux
Structures complexes Pr ZEGOUR DJAMEL EDDINE
Université Mohammed V-Agdal École Supérieure de Technologie Salé
Programmation en Java Tableaux NGUYEN Thi Minh Tuyen
II. Chaînage, SDD séquentielles
Déclaration des données constantes Déclaration des données variables
Procédures et fonctions Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Chapitre 6 Les traitements avancés
Algorithmes de tri et de recherche
Les variables et les types standard des données
II. Chaînage, SDD séquentielles
Structures simples et tableaux Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
1 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
Cours LCS N°4 Présenté par Mr: LALLALI
Les fichiers 1ère partie
Doan Chien Thang Aôut,2008.  La vue d'ensemble des systèmes d'exploitation  Les processus et les fils  Gestion de la mémoire  Le système des fichiers.
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : Introduction D. E ZEGOUR Institut National d ’Informatique.
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
LES TABLEAUX Définition: Création d’un tableau:
CSI2510 Structures des Données et Algorithmes
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
H. Richard – Elodie Laine – Initiation à la programmation impérative et algorithmique Cours 5 – Tableaux Largement inspiré des cours.
Transcription de la présentation:

Les structures de données séquentielles contiguës Isabelle Comyn-Wattiau 1. Les structures séquentielles 2. Les listes linéaires contiguës 3. Les tableaux 4. Les fichiers séquentiels I. Wattiau

1. Les structures séquentielles

Notion de structure Rôle des variables dans les programmes Une structure = un ensemble de variables de même nature auxquelles on doit accéder : soit directement par leur numéro d’ordre soit en les parcourant une par une dans l’ordre I. Wattiau

Parcours d’une structure Recherche séquentielle : examiner tous les éléments jusqu’à trouver celui que l’on cherche Accès direct : on peut directement examiner l’élément que l’on souhaite - impossible dans une structure purement séquentielle Recherche de type dichotomique : possible dans une structure séquentielle triée I. Wattiau

Types de structures séquentielles Liste linéaire : suite d’éléments de même type Exemples : fichier séquentiel, tableau, file, pile 2 organisations contiguë chaînée I. Wattiau

Parcours séquentiel d’une liste linéaire L Supposons que l’on ait : une fonction tête pour accéder au premier élément une fonction longueur pour connaître le nb d ’éléments une fonction succ pour accéder à l’élément suivant Complexité : o(n) X:=tête(L); traiter(X); pour i:=1 jusqu’à longueur(L)-1 faire X:=succ(X); finpour I. Wattiau

2. Les listes linéaires contiguës - Suite d’éléments de même nature - stockés les uns à la suite des autres - l’accès est au minimum séquentiel - mais d’autres accès sont parfois possibles

3. Le vecteur ou tableau Parcours d’un tableau Somme des éléments T[i] 1 2 i … n nmax Parcours d’un tableau Somme des éléments Autres exemples : parcours d’un tableau dans l’ordre des indices décroissants Calcul du nb d’occurrences d’une valeur val dans un tableau Calcul du maximum des éléments d’un tableau Recherche d’un bigramme dans un tableau Nb d’occurrences d’un bigramme dans un tableau i:=1; Tantque i<=n faire traiter T[i]; i:=i+1; fintantque S:=0; i:=1; Tantque i<=n faire S:=S+T[i]; i:=i+1; fintantque I. Wattiau

Recherche séquentielle d’un élément e dans un tableau trié T e <= T[i..n] T[i] 1 2 i n Complexité : au mieux : 1 au pire : n en moyenne : n/2 i:=1; Tantque i<=n et T[i]<e faire i:=i+1; fintantque {(i=n+1) ou T[i]>=e} I. Wattiau

Recherche séquentielle d’un élément e dans un tableau T non trié e <= T[i..n] T[i] 1 2 i n Complexité : au mieux : 1 au pire : n en moyenne : n/2 i:=1; Tantque i<=n et T[i]< > e Faire i:=i+1; Fintantque {(i=n+1) ou T[i]=e} I. Wattiau

Recherche dichotomique d’un élément e dans un tableau trié T T[1..i-1] < e e < T[i..n] T[m] 1 inf sup n Complexité : au mieux : 1 au pire : log2n trouvé:=faux; inf:=1; sup:=n; Tantque inf<=sup et non trouvé faire m:=(inf+sup) div 2; si T[m]=e alors trouvé:=vrai sinon si T[m]<e alors inf:=m+1 sinon sup:=m-1 finsi fintantque Écrire une fonction qui teste si un tableau est trié (renvoie vrai ou faux) Dans la suite, vous verrez tous les algos de tris avec leurs différentes complexités I. Wattiau

Insertion d’un élément dans un tableau non trié A priori, on ajoute le nouvel élément en fin de tableau S’il existe un critère définissant l’endroit d’insertion, on est dans un cas comparable au tableau trié I. Wattiau

Insertion d’un élément dans un tableau trié Chercher la place de l’élément à insérer Effectuer l’insertion I. Wattiau

Méthode séquentielle de recherche de la position d’insertion dans un tableau trié fonction position(T[1..n],e:élément):entier, p,i:entier; début si T[1]>e alors p:=1 sinon i:=n; tantque T[i] > e faire i:=i-1 fintantque p:=i+1; finsi retourner(p); fin Complexité : au mieux : 1 au pire : n en moyenne : n/2 I. Wattiau

Méthode dichotomique de recherche de la position d’insertion dans un tableau trié fonction position(T[1..n]:tableau d’éléments,e:élément):entier, p,inf,sup,m:entier; début si T[n]<=e alors p:=n+1 sinon inf:=1; sup:=n; tantque inf < sup faire m:=(inf + sup) div 2; si T[m]<=e alors inf:= m+1 sinon sup:=m finsi fintantque p:=sup; retourner(p); fin Complexité : au mieux : 1 au pire : log2n I. Wattiau

Insertion d’un élément e connaissant la position p souhaitée début pour i:=n à p faire T[i+1]:=T[i] finpour; n:=n+1; T[p]:=e; fin Complexité : au mieux : 1 au pire : n en moyenne : n/2 I. Wattiau

Suppression d’un élément dans un tableau trié Rechercher une occurrence de la valeur e à supprimer Si on la trouve, « tasser » les éléments du tableau I. Wattiau

Remarques sur les tableaux Ce sont des structures séquentielles mais qui permettent aussi un accès direct à partir du numéro de la place (accès par position) Efficaces en recherche s’ils sont triés, en insertion s’ils ne sont pas triés I. Wattiau

2.2. Le fichier séquentiel Suite finie d’éléments d’un même type Exemples : fichier des livres d’une bibliothèque enregistrements sur un magnétophone ensemble des passagers attendant la montée dans l’avion I. Wattiau

Caractéristiques d’un fichier séquentiel Ensemble de places totalement ordonné Chaque place est occupée par un élément d’un même ensemble On peut détecter la fin de fichier On peut définir une correspondance entre l’ordre dans le fichier et l’ensemble des éléments classés dans le fichier : il y a une règle de rangement I. Wattiau

Principe de parcours d’un fichier séquentiel Tête de lecture/écriture x1 x2 xi xn Fin de fichier Partie déjà lue Partie restant à lire Elément courant I. Wattiau

Primitives d’accès (1) Fin de fichier eof(fichier) vrai si la tête de lecture/écriture est en face de la marque de fin de fichier Accès au premier élément ouvrir(fichier) positionne la tête de lecture/écriture sur le premier élément du fichier ou sur la marque de fin de fichier s’il est vide Accès à l’élément courant lire(fichier,val) copie l’élément courant dans val et avance la tête d’une position I. Wattiau

Primitives d’accès (2) créer(fichier) écrire(fichier,val) : crée un fichier vide (ou détruit le contenu) écrire(fichier,val) : recopie en fin de fichier la variable val avance le ruban d’une position (sur la fin de fichier), possible si l’on est en fin de fichier uniquement association entre un nom de fichier physique et un identificateur de fichier interne au programme I. Wattiau

Somme des éléments d’un fichier f non vide de nb entiers s,c:entier; début s:=0; ouvrir(fichier); lire(fichier,s); tantque non eof(fichier) faire lire(fichier,c); s:=s+c; fintantque retourner(s) fin Complexité : taille du fichier : n I. Wattiau

Accès au k-ième élément d’un fichier séquentiel i:entier; c:fiche; trouvé:booléen; début ouvrir(fichier); trouvé:=faux; i:=1; tantque i<k et non eof(fichier) faire lire(fichier,c); i:=i+1; Fintantque; si non eof(fichier) alors trouvé:=vrai; lire(fichier,val); finsi fin I. Wattiau

Accès associatif à un élément du fichier c:fiche; trouvé:booléen; {recherche de la valeur val} début ouvrir(fichier); si eof(fichier) alors trouvé:=faux sinon lire(fichier,c); tantque non eof(fichier) et (c<>val) faire lire(fichier,c); fintantque trouvé:=c=val; finsi fin I. Wattiau

Eclatement d’un fichier en deux On suppose que le fichier f comprend des entiers naturels On construit deux fichiers : l’un fpair contenant les nbs pairs et l’autre fimpair les nombres impairs I. Wattiau

Eclatement d’un fichier en deux Début ouvrir(f); créer(fpair); créer(fimpair); tantque non eof(f) faire lire(f,c); si c mod 2 = 0 alors écrire(fpair,c); sinon écrire(fimpair;c); finsi; fintantque; Fin; I. Wattiau

Insertion d’un élément à la place k dans un fichier f On construit un fichier g par concaténation de : (k-1) premiers éléments de f l’élément à ajouter (n-k+1) derniers éléments de f I. Wattiau

Insertion d’un élément e à la place k dans un fichier f Début ouvrir(f); créer(g); i:=1; possible:=faux; tantque non eof(f) et (i<k) faire lire(f,c); écrire(g,c);i:=i+1; fintantque; si i=k alors écrire(g,e); tantque non eof(f) faire lire(f,c); écrire(g,c); fintantque; possible:=vrai; sinon possible:=faux; finsi fin I. Wattiau

Remarques sur les fichiers séquentiels Tous les accès sont séquentiels Le coût de l’algorithme est proportionnel à la taille du fichier La mise à jour nécessite (presque toujours) la construction d’un nouveau fichier I. Wattiau