[PDF] Algorithmique Structures de données : Les tableaux



Previous PDF Next PDF







ALGORITHME TABLEAUX

ALGORITHME TABLEAUX Mr KHATORY 2 Ensemble de données du même type Exemple de problème : Saisir une suite de nombres, puis afficher cette suite après avoir divisé tous les nombres par la valeur maximale de la suite 132 0 8100 -641 841 8902 57 -21 Remarque : appeler cette variable TabVal plutôt que Val Tableaux val 132 Val



Cours Algorithmique: Tableaux - Ex-Machina

Tableaux et Les Boucles •Les boucles sont extrêmement utiles pour les algorithmes associés aux tableaux •En effet, de nombreux algorithmes relatifs au tableau nécessitent de parcourir les éléments du tableau dans un certain ordre •Le traitement de chacun des éléments étant souvent le



Cours La structure de donn ees tableau et quelques algorithmes

Cours 4 : les tableaux, recheche et tri 2 Tableaux: d eclaration/initilisation Tableau= collection de donn ees homog enes, accessibles par un indice entier D eclaration d’un type tableau type = tableau de Exemple : constante N = 5 type polynome = tableau de N r e els On peut alors d eclarer une variable de type



Algorithmique Structures de données : Les tableaux

Structures séquentielles : les tableaux 4 de 1 Structure de donnée séquentielle (tableau) Enanglais:array,vector Définition Untableau estunestructurededonnéeT quipermetdestocker



Cours 4 Les tableaux et les boucles - IGM

Plan du cours 4 – Tableaux et boucles Le nombre d'utilisations d'un mot dans un texte • Écrivez un algorithme TrouveMot qui prend en entrée une chaîne de



Fiche de révisions - Algorithmique

Tableau : oui, on peut définir des tableaux, des tableaux d’entieҸs, des taлleaux de Ҹéels Pas besoin de vous faiҸe un dessin, м’est un taлleau On peut même définir des tableaux de tableaux et ainsi de suite On paҸle de taлleau à ܙ, ܚ, ܛ, , N dimensions



Cours d’Algorithmique 1er Semestre (Fred´ eric Koriche)´ IUT

Cours d’Algorithmique 1er Semestre (Fred´ eric Koriche)´ IUT Informatique de Lens Tableaux Statiques Unidimensionnels Un tableau (statique unidimensionnel) est une sequence de donn´ ees du m´ eme type accessibles par leurˆ index Il est defini par:´ I sonnom, I letypede ses el´ ements, et´ I satailleou le nombre de ses el´ ements ´



Christine Solnon 2007-2008

5 Les tableaux 33 6 Etude de quelques algorithmes sur les tableaux 35 3 Dans le contexte de ce cours, un algorithme est conçu pour être exécuté par un



COURS ALGORITHMIQUE ET PROGRAMMATION INFORMATIQUE

• Cours et exercices corrigés d’algorithmique- J Julliand Ed Vuibert Fev 2010 • Algorthmique méthodes et modèles , P Lignelet Ed Masson 1988 • Cours algorithme Cécile Balkanski, Nelly Bensimon, Gérard Ligozat IUT Orsay MAP - UNS 2

[PDF] ecrire un algorithme qui calcule la racine carré

[PDF] algorithme racine carrée entière

[PDF] algorithme de babylone

[PDF] algorithme somme des n premiers entiers pairs

[PDF] programme ti 82 jeux

[PDF] évaluation digestion cm1 eklablog

[PDF] schéma digestion cm1 compléter

[PDF] évaluation sur l appareil digestif cm1

[PDF] la digestion cm1 lutin bazar

[PDF] séquence la digestion cm1

[PDF] evaluation digestion 5eme

[PDF] svt 5eme digestion evaluation exercices

[PDF] système digestif cm1

[PDF] schéma de l'appareil reproducteur de la femme ? compléter

[PDF] appareil reproducteur de l'homme 4eme

1 de 1

Algorithmique

Structures de données : Les

tableaux

Florent Hivert

Mél :Florent.Hivert@lri.fr

Page personnelle :http://www.lri.fr/˜hivert

2 de 1

Algorithmes et structures de données

La plupart des bons algorithmes fonctionnent grâce à une méthode astucieuse pour organiser les données. On distingue quatre grandes classes de structures de données :Les structures de données séquentielles (tableaux); Les structures de données linéaires (liste chaînées);

Les arbres;

Les graphes.

Structures séquentielles : les tableaux

3 de 1Structures

séquentielles : les tableaux

Structures séquentielles : les tableaux

4 de 1Structure de donnée séquentielle (tableau)

En anglais : array, vector.Définition

Untableauest une structure de donnée T qui permet de stocker un certain nombre d"éléments T[i]repérés par un index i. Les

tableaux vérifient généralement les propriétés suivantes :tous les éléments ont le même type de base;

le nombre d"éléments stockés est fixé; l"accès et la modification de l"élément numéro i est en temps constant(1), indépendant de i et du nombre d"éléments dans le tableau.

Structures séquentielles : les tableaux

5 de 1Tableau en C

On suppose déclaré un typeelempour les éléments.Espace mémoire nécessaire au stockage d"un élément exprimé

en mots mémoire (octets en général) :sizeof(elem).Retenir

définition statique :elem t[taille];définition dynamique en deux temps (déclaration, allocation) :

#include elem *t; t = (elem*) malloc(taille*sizeof(elem));l"adresse det[i]est notét + i. Calculée par

Addr(t[i]) =Addr(t[0]) +sizeof(elem)i

Structures séquentielles : les tableaux

5 de 1Tableau en C

On suppose déclaré un typeelempour les éléments.Espace mémoire nécessaire au stockage d"un élément exprimé

en mots mémoire (octets en général) :sizeof(elem).Retenir

définition statique :elem t[taille];définition dynamique en deux temps (déclaration, allocation) :

#include elem *t; t = (elem*) malloc(taille*sizeof(elem));l"adresse det[i]est notét + i. Calculée par

Addr(t[i]) =Addr(t[0]) +sizeof(elem)i

Structures séquentielles : les tableaux

5 de 1Tableau en C

On suppose déclaré un typeelempour les éléments.Espace mémoire nécessaire au stockage d"un élément exprimé

en mots mémoire (octets en général) :sizeof(elem).Retenir

définition statique :elem t[taille];définition dynamique en deux temps (déclaration, allocation) :

#include elem *t; t = (elem*) malloc(taille*sizeof(elem));l"adresse det[i]est notét + i. Calculée par

Addr(t[i]) =Addr(t[0]) +sizeof(elem)i

Structures séquentielles : les tableaux

5 de 1Tableau en C

On suppose déclaré un typeelempour les éléments.Espace mémoire nécessaire au stockage d"un élément exprimé

en mots mémoire (octets en général) :sizeof(elem).Retenir

définition statique :elem t[taille];définition dynamique en deux temps (déclaration, allocation) :

#include elem *t; t = (elem*) malloc(taille*sizeof(elem));l"adresse det[i]est notét + i. Calculée par

Addr(t[i]) =Addr(t[0]) +sizeof(elem)i

Structures séquentielles : les tableaux

6 de 1Opérations de base (1)

Hypothèses :tableau de taille max_taille alloué éléments 0iaccès au premier élément :(1)accès à l"élément numéro i :(1)accès au dernier élément :(1)

Structures séquentielles : les tableaux

7 de 1Opérations de base (2)

Hypothèses :tableau de taille max_taille alloué éléments 0iinsertion d"un élément au début :(taille)insertion d"un élément en position i :(taillei)O(taille)insertion d"un élément à la fin :(1)

Structures séquentielles : les tableaux

8 de 1Opérations de base (3)

Hypothèses :tableau de taille max_taille alloué éléments 0iStructures séquentielles : les tableaux

9 de 1Algorithmes de base

Hypothèses :tableau de taille taille alloué et initialisé

Retenir (Algorithmes de base)

accumulation d"une opération sur les éléments du tableaux (par exemple : somme, produit, maximum, etc.) :(taille) nombre d"opération.cas particulier; comptage du nombre d"éléments qui vérifie une

certaine condition :(taille)tests de la conditionrecherche d"une occurence, d"un élement qui vérifie une

certaine condition : O(taille)tests de la condition

Structures séquentielles : les tableaux

10 de 1Problème de la taille maximum

On essaye d"insérer un élément dans un tableau où taille=max_taille

Il n"y a plus de place disponible.

Comportements possibles :Erreur (arrêt du programme, exception) Ré-allocation du tableau avec recopie, coût :(taille)

Structures séquentielles : les tableaux

10 de 1Problème de la taille maximum

On essaye d"insérer un élément dans un tableau où taille=max_taille

Il n"y a plus de place disponible.

Comportements possibles :Erreur (arrêt du programme, exception) Ré-allocation du tableau avec recopie, coût :(taille)

Structures séquentielles : les tableaux

11 de 1Ré-allocation (2)

On ajoute 1 par 1néléments. On suppose que l"on réalloue une case supplémentaire à chaque débordement. Coût (nombre de copies d"éléments) : n+n1X i=1i=n(n+1)2 2(n2) Remarque : si on alloue des blocs de tailleb, en notantk=dnb e: n+k1X i=1bi=n+bk(k1)2 (bk)2b =n2b 2(n2) La vitesse est divisée parbmais lacomplexité reste la même.

Structures séquentielles : les tableaux

11 de 1Ré-allocation (2)

On ajoute 1 par 1néléments. On suppose que l"on réalloue une case supplémentaire à chaque débordement. Coût (nombre de copies d"éléments) : n+n1X i=1i=n(n+1)2

2(n2)Remarque : si on alloue des blocs de tailleb, en notantk=dnb

e: n+k1X i=1bi=n+bk(k1)2 (bk)2b =n2b 2(n2) La vitesse est divisée parbmais lacomplexité reste la même.

Structures séquentielles : les tableaux

12 de 1Ré-allocation par doublement de taille

Retenir (Solution au problème de la réallocation) À chaque débordement on ré-allouedKmax_tailleeoù K>1est

une constante fixée (par exemple K=2).Si l"on veut à la fin un tableaux denéléments, le nombre de copies

d"éléments (en comptant la copie dans le tableau) est environ C=mX i=1K i=Km+11K12(Km) oùmest le nombre de ré-allocations c"est-à-dire le plus petit entier tel queKmn, soitm=dlogK(n)e. On a donc nKmFinalement le coût est(n).

Structures séquentielles : les tableaux

13 de 1Nombre moyen de copies

Selon la valeur deK, la constante de complexité varie de manière importante : Le nombre de recopies d"éléments est approximativement C=mX i=1K i=Km+11K1KK1n

Quelques valeurs :

K1:01 1:1 1:2 1:5 2 3 4 5 10K

K1101 11 6 3 2 1:5 1:33 1:25 1:11

Interprétation : Si l"on augmente la taille de 10% à chaque étape, chaque nombre sera recopié en moyenne 11 fois. Si l"on double la taille à chaque étape, chaque nombre sera en moyenne recopié deux fois.

Structures séquentielles : les tableaux

13 de 1Nombre moyen de copies

Selon la valeur deK, la constante de complexité varie de manière importante : Le nombre de recopies d"éléments est approximativement C=mX i=1K i=Km+11K1KK1nQuelques valeurs :

K1:01 1:1 1:2 1:5 2 3 4 5 10K

K1101 11 6 3 2 1:5 1:33 1:25 1:11

Interprétation : Si l"on augmente la taille de 10% à chaque étape, chaque nombre sera recopié en moyenne 11 fois. Si l"on double la taille à chaque étape, chaque nombre sera en moyenne recopié deux fois.

Structures séquentielles : les tableaux

14 de 1Bilan

Retenir (Nombre de copies)

Dans un tableau de taille n, coût de l"ajout d"un élémentdans le piredes cas :

Coût en tempsn;Coût en espace(K1)n:

En moyenne, sur un grand nombre d"éléments ajoutés :

Coût en tempsKK1;Coût en espaceK:

On dit que l"algorithme travaille entemps constant amortis (Constant Amortized Time (CAT) en anglais).

Structures séquentielles : les tableaux

15 de 1Compromis Espace/Temps

QuandKaugmente, la vitesse augmente mais la place mémoire gaspillée ((K1)n) augmente aussi. Le choix de la valeur deK dépend donc du besoin de vitesse par rapport au coût de la mémoire.Retenir C"est une situation très classique : dans de nombreux problèmes, il

est possible d"aller plus vite en utilisant plus de mémoire.Exemple : on évite de faire plusieurs fois les même calculs en

stockant le résultat.

Structures séquentielles : les tableaux

15 de 1Compromis Espace/Temps

QuandKaugmente, la vitesse augmente mais la place mémoire gaspillée ((K1)n) augmente aussi. Le choix de la valeur deK dépend donc du besoin de vitesse par rapport au coût de la mémoire.Retenir C"est une situation très classique : dans de nombreux problèmes, il

est possible d"aller plus vite en utilisant plus de mémoire.Exemple : on évite de faire plusieurs fois les même calculs en

stockant le résultat.

Structures séquentielles : les tableaux

15 de 1Compromis Espace/Temps

QuandKaugmente, la vitesse augmente mais la place mémoire gaspillée ((K1)n) augmente aussi. Le choix de la valeur deK dépend donc du besoin de vitesse par rapport au coût de la mémoire.Retenir C"est une situation très classique : dans de nombreux problèmes, il

est possible d"aller plus vite en utilisant plus de mémoire.Exemple : on évite de faire plusieurs fois les même calculs en

stockant le résultat.

Structures séquentielles : les tableaux

16 de 1En pratique ...

On utilisevoid *realloc(void *ptr, size_t size);

Extrait des sources du langagePython

Fichierlistobject.c, ligne 41-91 :

/* This over-allocates proportional to the list size, making room * for additional growth. The over-allocation is mild, but is * enough to give linear-time amortized behavior over a long * sequence of appends() in the presence of a poorly-performingquotesdbs_dbs23.pdfusesText_29