This repository has been archived on 2019-08-08. You can view files and clone it, but cannot push or open issues or pull requests.
s1-tp/S2/TP4/analyse_tris.py
Jean-Loup Beaussart 193212ff0f liste de listes
2015-03-10 11:09:49 +01:00

146 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
TP AP1
Licence SESI 1ère année
Univ. Lille 1
analyse_tris.py
TP4 - Evaluation empirique des tris
http://www.fil.univ-lille1.fr/~L1S2API/CoursTP/tp4_tri.html
"""
__author__ = 'PREUD\'HOMME Geoffrey & BEAUSSART Jean-loup'
__date_creation__ = 'Tue, 10 Mar 2015 10:26:41 +0100'
from random import randint, shuffle
def partie(nom):
print('\n', nom, '=' * len(nom), sep='\n')
def section(nom):
print('\n', nom, '-' * len(nom), sep='\n')
def question(numero):
print('\n***', 'Question', numero, '***')
partie("Prérequis")
partie("Travail à réaliser")
section("Préliminaires")
question(1)
def liste_croissante(n):
"""
int -> list(int), construit la liste des entiers compris entre 0 et n-1, rangés dans l'ordre croissant
CU: n est un entier positif
"""
assert(type(n)==int and n>=0)
return [i for i in range(n)]
question(2)
def liste_decroissante(n):
"""
int -> list(int), construit la liste des entiers compris entre 0 et n-1, rangés dans l'ordre décroissant
CU: n est un entier positif
"""
assert(type(n)==int and n>=0)
return [i for i in range(n-1, -1, -1)]
question(3)
def liste_alea(n, a, b):
"""
int, int, int → list
Renvoie une liste dentiers, qui construit une liste de longueur n les entiers choisis au hasard
compris entre a et b.
"""
res = []
for i in range(n):
res.append(randint(a, b))
return res
section("Compter les comparaisons")
compteur = 0
def comp(x, y):
"""
parametres
x , y de même type et comparables
valeur renvoyee : int
-1 si x<y
0 si x==y
1 si x>y
action : incrémente le compteur
CU : aucune
"""
global compteur
compteur = compteur + 1
if x < y:
return -1
elif x == y:
return 0
else:
return 1
question(1)
question(2)
partie("Analyse du tri par sélection")
question(1)
liste_de_listes_alea = []
for i in range(1, 101):
liste_de_listes_alea.append(liste_alea(i, 0, 500))
question(2)
partie("Analyse du tri par insertion")
question(1)
section("Dans le meilleur des cas")
question(1)
question(2)
section("Dans le pire des cas")
question(1)
question(2)
section("En moyenne")
question(1)
question(2)
question(3)
question(4)
question(5)
section("Avec Gnuplot")
question(1)