Vous êtes sur la page 1sur 11

Debut

S,i,x :enitier
Afficher(‘saisir l’ entier’) (1)
Lire(x) (1)
S←1 (1)
Pour i←1 ; i<=x ;i++ nfois
S←S*i (2)
Finpour
Afficher(‘factoriel de ‘,x,’est = ‘,S) (1)
Fin
T(n) = 3 + 2n +1
T(n) = 2n + 4
2n + 4 < 3f(n) alors T(n)=Ὅf(n)
Exercice
Ecris un algorithme qui donne le plus grand de deux nombre entrer au clavier
par l’ utilisateur calculer
Exercice 2
Soit un tableau de taille n et un tableau de taille m on desire rechercher dans le
tableau de taille m une valeur contenu dans le tableau de taille n . Ecris un
algorithme qui permet de réaliser cela , calculer le coût de cet algorithme en
déterminer la complexiter
Exercice correction
Debut
x,y :entier
afficher(‘entrer la valeur de la valeur du premier nombre’ (1)
lire(x) (1)
afficher(‘entrer la valeur du deuxième nombre’) (1)
lire(y) (1)
si x< y alors
afficher(x,‘ est le plus grand nombre’) (1)
sinon si x == y alors
afficher(x,‘ = ‘ , y) (1)
sinon
afficher(y,’est le plus grand nombre’) (1)
Finsi
Fin
Exercice 2
Debut
Tab_m[m] , Tab_n[n] : entier T[n] = (n x 1 + 1 + 3 )n + 3 +1
= (n+4)n + 4
T[n] = (n+4)n + 4
T[n] = n² + 4n + 4
partir d’ un certain rang
T[n] ≤ 2n²
T[n] ≤ 2f(n²)
Alors T[n] est de complexité
quadratique

≤ Pour i = 0 ; i <= n ; i ++ Faire


Pour j=0 ; j<=m ;j++ Faire
Si tab[n]=tab[m]
Afficher(tab[m])
break
Finsi
Fin pour
Finpour
Fin
Le coût d’ une condition
Si condition alors
//instruction P
Sinon
//instruction Q
Finsi
Coût = cout condition + sup(instruction P,instruction Q
Les structures des données les arbres et les graphes

7-Les arbres
Les arbres sont les types abstraits utilisée en programmation informatique pour
les besoins de structures hiérarchique de données
On peut citer comme exemple l’arborescence des dossiers dans un système de
ficher des système d’exploitation
Les expressions arithmétiques qui peuvent être représenter par des arbres
étiquetés par des opérateurs des constantes et des variables
A - Définition et terminologies
Un arbre est constitué de nœud relier entre eux par des arrêts
1

arrêt
2 :1 2.3
2.2

noeud
3.4 3.6
3.5

3.2 3.3
3.1
Remarque la finalité d’ un arbre est le plus souvent de structuré les donnée
Chaque nœud peut être identifer par une étiquete l’ étiquettt réprésente
directement la valeur du nœud ou bien une clée associé à une donné
8-Arbre binaire
Les arbres binaire est un cas particulier d’ arbre ou chaque nœud possède au
maximum deux fils
Les deux fils sont classée nœud gauche et nœud droit et ne sont pas
interchangeable

Il est possible d’ avoir des arbres binaire de même taille mais de forme
différente on distingue :
- Un arbre parfait : tout les nœud on exactement de fils sauf les feuilles
- Un arbre presque complet : tout ses feuilles on la même profondeur et
les feuilles manquantes sont toute à droites
- Un arbre équilibré : est un arbre ou toute ses feuilles sont à la même
profondeur
- Un arbre piliforme encore appeler arbre dégénéré est un arbre ou tout
les nœud possède un unique fils
- Un arbre complet : c’ est un arbre binaire ou tout les nœud on
exactement deux fils sauf les feuilles et ces feuilles on même profondeur
La hauteur d’ un arbre philiforme de taille n est égale à n-1
La hauteur d’ un arbre complet de taille n est égale à la partie entière
entière du logarithme à base 2 de n
L = E(log₂(n))
Un arbre philiforme et un arbre complet etant les deux cas extrème on peut
encadrer la hauteur h d’ un arbre binaire quelconque par E(log₂(n))≤n≤n-1
De la même manière on peut encadrer la taille n d’ un arbre bianair
quelconque que l’ on peut obtenir pour une hauteur h donnée par
h + 1 ≤ n ≤2h+ 1 – 1 Pour un arbre de hauteur 2 on aura 3noeud et pour un
arbre philiforme et un arbre complet on aura 7 nœud
9-Implémentation
En utilisation UML on peut établir le diagramme de classe suivant
Racine

nœud
Noeud

gauch
nœud droit

Une instance d’ arbre binaire peut être définis par un objet de type arbre
possédent une racine de type nœud chaque nœud possède quant à lui
0(feuilles) ou deux fils de type nœud(fils gauche et fils droit) Language utilisant
la gestion des droit (Java,python,c++)
Exemple
Classe Arbre :
Def __iniit__(self,racine = None) :(déclaration de constricteur)
Self.racine = racine
Classe Nœud :
Def __init__(self,v,g= None ,d=None)
Self.g = g
Self.d = d
Self.v = v
ng = Noeud(3)
nd = Noeud(4)
ng = Noeud(1,ng,nd)(c’ est un noeud dont l ‘ etiquette est 1 et ng et nd sont ses
noeud fils)
nd = Noeud(10)
nd = Noeud(6,ng,nd)
ng = Noeud(9)
ng= Noeud(15,d = nd)
arbre = Arbre(Noeud(5,ng,nd))

10- Les graphes

C’est une notion mathématique


Il’ est constitué de sommet relier entre eux par des arrêtes. Pour un graphe
noté g on utilise le couple (V,E) V : représente les sommets et E les arrêtes
Il existe deux types de graphes :
- Les graphes orientés et les graphes non orientés
Dans un graphe orienté on quitte un nœud A pour un nœud B
Par contre un graphe non orienté on quitte un nœud pour aller vers n’
importe quel noeud
Les graphes sont utiliser pour calculer les distances séparant les
routeur l’ algorithme de Djiskra qui permet de calculer la distance la plus
proche entre les routeurs pour transmettre un paquet
L’ orque un nœud(sommet, point) x est relier à un sommet y par une
arrêt(ligne) alors on dit que y est adjacente à x ou bien est voisin de x
Le chemin est une séquence finis de sommet relier entre eux par des arrête
Remarque
Dans un graphe orienté, il peut exister un chemin menant du sommet x au
sommet y alors que l’ inverse n’ est pas forcement possible
La distance entre deux sommet d’ un arbre est la longueur(nombre d’
arrête) du chemin le plus court reliant ces deux sommets
Un graphe non orienté est connexe si pour tout paire (x,y) de sommet il
existe un chemin de x à y
Un graphe orienté est connexe si le graphe non orienté obtenue en ne tenant
pas compte du sens des arrêtes est connexes
Un graphe orienté est fortement connexe si pout tout pair (x,y) il existe un
chemin de x à y et un chemin de y à x

Tableau et Triage des données


Introduction
Trier un tableau est à la fois un problème fondamental en algorithmique et une
étape importante dans le prétraitement des algorithme complexe. Supposons
un tableau comment savoir qu’il est trier ou non alors il nous ramène à écrire
une fonction
Soit un tableau d’ entier de taille n écrivons une fonction qui permet de
déterminer est trier ou non La fonction va renvoyer un booléean
Début
Fonction is_sort(t[ ] :entier ,n :entier) :booleen
i : entier
i=0
Tant que i < 0
Si t[i]<t[i+1] alors
Continue
Sinon
Return False
Finsi
i++

Fintantque
Return true
Fin fonction

Il existe différent algorithme pour trier les donnée dans un tableau


1- Le trie par sélection
2- L’ idée du trie par sélection consiste à parcourir un tableau et à
rechercher le plus petit élément non encore trier et à le placer à la
suite des éléments déjà trier à une étapes i les i-1 plus petits éléments
sont à leur place respective et il nous faut placer le ième éléments
plus petit élément à placer en position i L’algorithme consiste à
chercher et à trouver le plus petits éléments du tableau restant et l’
échanger avec l’ éléments à la position i
Pour réaliser le trie par sélection il faudra écrire une fonction qui
retourne le minimum d’ un tableau et une procédure qui nous permet
d’ échangé la position de ce minimum avec la positon courantes
Fontion trouvemin(t[] :entier,i :entier) :entier
min,j :entier
min← i
pour j de min + 1 à taille(taille restante du tableeau)
si t[j]<t[min] alors
min ← j
Finsi
Return min
Fin fonction
Procedure echanger(t[ ] enier ,i,j ;entier)4
U :entier
u←t[i]
t[i]←t[j]
t[y]←u
Finprocedure
Procedure tri-selection(t[] : entier, taille entier)
i,pos :entier
pour i de 0 à taille -1
pose ← trouvermin(t,i)(Il permet de trouver le plus
petits element du tableau)
echanger(t,i,pos)
Finpour
Finproçédure

3- Le trie par insertion


C’ est le trie le plus naturel que font les humains il consiste à parcourir
le tableau de gaucher vers la droite et à insèrer l’ élément courant à la
bonne place dans le tableau trier de gauche
Fonction trie_insertion(t[] :entier) :tableau
i ,n:entier
n = taille du tableau
pour i de 0 à n-1 faire
elementcourant ← t[i]
Ip ← i-1
Tant que Ic> 0 et t[Ip]>t[i] faire
T[Ip+1]←t[Ip]
Ip
Fin tant que
t[Ip + 1 ]← t[Ip]
le trie par insertion est de complexité quadratique il s’ agit de l’ un des
meillleur algorithme pour le trie de petite séquence de donnée
3-Le trie à bulle
Le trie à bulle consiste à parcourir le tableau par exemple de gauche à
droite en comparant les éléments côte à côte et en les permutant si
ils ne sont pas dans le bon ordre au cour d’ une passe du
tableau(parcour du tableau)Les plus grand élément remonte de
proche en proche vers la droite du tableau
On s’arrêt lorsque au cours d’ une passe on ne detect aucune
permutation
Procédure tri_bulle(t[] :entier)
Trie :boolen
trie←false
tant que trie == false
trie = true
pour i de 0 à n-1
si t[i] > t[i+1] alors
échanger(t,i,i+1)
trie←false
Finsi
Finpour
Fintantque
Finprocédure

Le trie à bulle est de tandance quadratique


Exercie1
Ecrire une fonction qui permet de retourner le maximum d’un
tableau d’entier de taille n
Déterminer la complexité
Exercice 2
Soit un tableau d’entier de taille n écrit un algorithme qui permet de
rechercher l’élément le plus proche d’un entier donnée (l’entier
fournit par l’utilisateur) Dans ce tableau d’ entier.
Afficher l’index de cet élément et la valeur de ce dernier
Exercice 3
Ecrire un algorithme qui permet de ranger les élément d’un tableau
d’entier de taille n dans un nombre décroissant
Exercice
Ecrire un algorithme qui permet de compter le nombre de valeurs
Entrer par un utilisateur dans un tableau d’entier
Exercice 4
Soit une matrice carrée n*n écris un algorithme de calculer la
transposer de cett2.e matrice
Soit une matrice A(n,p) ET une matrice B(m,n) écrit un programme qui
permet de calculer le produit matriciel de ces deux matrice
Soit deux matrice carrée A,B écrire un algorithme qui permet de
calculer sa somme
Ecrire un algorithme qui demande à l’utilisateur de saisir un nombre
Puis lui affiche la somme des nombres consécutif inférieur à ce
nombre
Ecrire un algorithme qui demande à l’utilisateur de saisir 10 nombre
puis lui affiche le plus grand des nombres saisis et son rang dans la
liste
Ecrire un procédure qui permet d’afficher le plus grand et le plus petit
de trois nombre saisie par l’utilisteur

Vous aimerez peut-être aussi