• Aucun résultat trouvé

TRI RAPIDE (QUICK SORT

N/A
N/A
Protected

Academic year: 2022

Partager "TRI RAPIDE (QUICK SORT"

Copied!
1
0
0

Texte intégral

(1)

# =========================================================== #

# TRI RAPIDE (QUICK SORT) #

# Evaluation expérimentale de la complexité moyenne. #

# (nombre de comparaisons effectuées). #

# Version du 21/11/2015 #

# =========================================================== #

# Importations

# ============

from random import randint from time import perf_counter from math import log

# La fonction de tri

# ==================

def tri_rapide(L):

global c lL = len(L) if lL <= 1:

return L else:

# on choisit ici comme pivot l'élément "central" de la liste x = L.pop(lL//2)

Lg, Ld = [], []

# La condition du "while" est satisfaite tant que la liste L n'est pas vide ...

while L:

c += 1 y = L.pop(0) if y < x:

Lg.append(y) else:

Ld.append(y)

return tri_rapide(Lg) + [x] + tri_rapide(Ld)

# Saisie des paramètres et initialisations.

# La variable globale c pour compter le nombre de comparaisons effectuées

# =======================================================================

c = 0

ntris = int(input('Combien de tris souhaitez-vous ? ')) n = int(input('\nLongueur des listes à trier ? '))

valmax = int(input('\nValeur maxi des nombres générés ? ')) t_ellapse_total = 0

for i in range(ntris):

LNA = [randint(0,valmax) for i in range(n)]

t_start = perf_counter() LT = tri_rapide(LNA) t_end = perf_counter()

t_ellapse_total += t_end - t_start

# Affichage du temps de tri sur nxln(n) moyen qui doit être à peu près constant (entre 1,5 et 2)

#

=====================================================================================

=========

print('\nDurée du tri : ',t_ellapse_total/(ntris*n*log(n))) print('\nNombre total de comparaisons : ',c)

print('\nComparaisons : ',c/(ntris*n*log(n)))

# ================

# FIN DU PROGRAMME

1

Références

Documents relatifs

Principe du diviser pour régner : on divise la liste par deux jusqu’à obtenir une liste de longueur unitaire (ou nulle) facile à classer. On utilise une autre fonction pour

Le tableau est dans un ordre a priori aléatoire, donc Q correspond à une loi uniforme (toutes les positions sont équiprobables).. Soria, Types de données

Or pour que l’élément de rang i et l’élément de rang j soient comparés il faut que le pivot ne soit jamais choisi entre l’élément de rang i et de rang j avant le choix de i ou

Activez votre lecteur de streaming à l’aide de votre ordinateur ou de votre smartphone pour le connecter à un compte Roku.. SCHRITT 6: Einrichtung und Aktivierung per

Si un réseau de tuyauterie PVC pour aspirateur central est déjà installé dans votre maison : suivez les instructions à l’intérieur de ce guide pour raccorder à la

No Tools Required for This Step No se necesitan herramientas para este paso Aucun outil n’est nécessaire pour cette étape. Allow full hot &amp; full cold water to run for at least

On construit alors deux « sous-tableaux » : l'un contient toutes les valeurs du premier tableau qui sont inférieures ou égales au pivot, l'autre contient les valeurs supérieures

ARCHOS SA., 12 rue Ampère, 91430 Igny, France Model: AC80TWF; Made in PRC; INPUT: 5V 1.5A.. 9.