This repository has been archived on 2019-08-09. You can view files and clone it, but cannot push or open issues or pull requests.
s1-tp/S2/TP4/tp4.py

73 lines
1.3 KiB
Python
Raw Normal View History

2015-02-24 10:31:14 +01:00
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
TP AP1
Licence SESI 1ère année
Univ. Lille 1
tp4.py
TP 4
"""
__author__ = 'PREUD\'HOMME Geoffrey & BEAUSSART Jean-loup'
__date_creation__ = 'Tue, 24 Feb 2015 10:30:21 +0100'
2015-02-24 10:34:05 +01:00
def question(numero):
print('\n***', 'Question', numero, '***')
def squestion(lettre):
print('\n%s)' % lettre)
question(1) # Programmer recherches seq, seq triée, dicho
2015-02-24 10:36:37 +01:00
def seq(l, a, b, x): # Jean-loup
2015-02-24 10:45:33 +01:00
"""
Recherche séquentielle de l'élément x dans la liste l, entre les borne a et b, b étant exclu
list(x), int, int, x (bool, int)
CU: 0 <= a < b <= len(l)
"""
assert(a >=0 and b > a and b <= len(l))
i=a
while i < b and l[i] != x:
i += 1
if i < b:
return (True, i)
else:
return (False, 0)
2015-02-24 10:36:37 +01:00
def seqTrie(l, a, b, x): # Jean-loup
return None
def dicho(l, a, b, x): # Geoffrey
2015-02-24 10:41:45 +01:00
"""
list, int, int, a (bool, int)
Renvoie la position d'un élément x dans la liste l
aux bornes a et b par dichotomie.
"""
a = d
f = b - 1
while d < f:
m = (d+f)//2
if l[m] < x:
d = m+1
else:
f = m
return x == l[d]
2015-02-24 10:36:37 +01:00
2015-02-24 10:34:05 +01:00
question(2) # Utiliser LEXIQUE
2015-02-24 10:43:27 +01:00
from lexique import *
2015-02-24 10:34:05 +01:00
squestion('a') # Vérifier que LEXIQUE est triée
squestion('b') # Effectuer de nombreuses recherches de LEXIQUE
# et comparer les temps d'éxécution selon les
# algorithmes utilisés