• Aucun résultat trouvé

Le tri par insertion

N/A
N/A
Protected

Academic year: 2022

Partager "Le tri par insertion"

Copied!
2
0
0

Texte intégral

(1)

Le tri par insertion

1 Tri par insertion

1.1 Principe

Trier les deux premiers, insérer le troisième parmi les deux premiers déjà triés, insérer le quatrième parmi les trois premiers déjà triés...

1.2 Complexité

NotonsC(n)le nombre de comparaisons à eectuer ; si la liste est déjà triée ? Réponse

C(n) =n−1

Dans le pire des cas ? Réponse

C(n) =n(n−1)2 En moyenne ? Réponse

C(n) =n(n−1) 4

Chaque élément est comparé en moyenne à la moitié des précédents.

1.3 Comment tester expérimentalement le caractère quadratique ?

On peut comparer le temps d'éxecution pourn, puis2n,4n...

On peut aussi examiner Tn(n)2 pour diérentes valeurs de n.

1.4 Amélioration

On pourrait eectuer une recherche dichotomique pour trouver l'emplacement où on insère.

Le nombre de comparaisons est alors dominé par(n.lnn). Mais la complexité de l'algorithme reste quadratique.

2 Programmes

1

(2)

import random as rd from time import clock

def tri_insertion1(L):

for indice in range(1, len(L)):

a = L[indice]

j = indice - 1

while j >= 0 and L[j] > a:

L[j+1] = L[j]

j -= 1 L[j+1] = a

# deux variantes avec 'slicing'

# légèrement plus rapides

def tri_insertion2(L):

for indice in range(1, len(L)):

a = L[indice]

j = indice - 1

while j >= 0 and L[j] > a:

j -= 1

L[j+2 : indice+1] = L[j+1 : indice]

L[j+1] = a

def tri_insertion3(L):

for indice in range(1, len(L)):

a = L[indice]

j = indice - 1

while j >= 0 and L[j] > a:

j -= 1

L[indice : indice + 1]= []

L[j+1 : j+1] = [a]

n = 10

L = [rd.randint(0, 2*n) for k in range(n)]

print(L) t1 = clock() tri_insertion1(L) t2 = clock() print(L)

print('temps1 : ', t2-t1) print('\n')

L = [rd.randint(0, 2*n) for k in range(n)]

print(L) t1 = clock() tri_insertion2(L) t2 = clock() print(L)

print('temps2 : ', t2-t1)

1

Références

Documents relatifs

Duns cette Note nous allons d~velopper une nouvelle m6thode beaucoup plus simple que routes les m~thodes employdes jusqu'ici pour 6tablir le r6sultat (5) et des

[r]

par V. — L'algorithme présenté généralise celui de Balas au cas quadratique, moyennant certaines hypothèses restrictives sur les coefficients. Néanmoins, Valgorithme s'applique à

Le cardinal de l'ensemble préfixe (u) f) suffixe (w) est proportionnel à la longueur de l'équation, et la substitution peut être réalisée en temps proportionnel à la longueur

• Idée : trouver le plus petit et le placer en premier puis trouver le plus petit parmi les éléments non placés et le placer en.

Lorsqu’une base de données est très volumineuse et non ordonnée, trouver une information dans cette base est très long et très ingrat.. En effet la seule solution est

Dans le tri rapide, après les 2 tris partiels, tous les éléments de la partie gauche sont inférieurs au pivot, alors que tous les éléments de la partie droite... naturelle, et

complexité temporel en fonction d'un paramètre n passé à l'algorithme on se concentre sur des grands n en utilisant la représentation au de haine et on s'intéresse au pire des