Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f0e5c2a114 | |||
| 19d830336b |
@@ -0,0 +1,26 @@
|
||||
Dimitri Solar
|
||||
Valentin Loison
|
||||
|
||||
# 1. Mesurer #
|
||||
Empreinte du rapport : 1d53de903efd2b7c
|
||||
|temps : | |
|
||||
| --- | --- |
|
||||
|real | 0m2.603s |
|
||||
| user | 0m2.596s |
|
||||
|sys | 0m0.004s |
|
||||
|
||||
# 3. Analyser
|
||||
Le temps est majoritairement pris par longueur et egales, notament a cause du nombre d'appel.
|
||||
|
||||
|
||||
# 4.Proposer
|
||||
|
||||
|
||||
le script appelle beaucoup trop egales et longueur
|
||||
il prenne plus de 60% du temps
|
||||
|
||||
|
||||
# 5. Solution éventuelle
|
||||
|
||||
passer par une recherche dichotomique et trier la listes des mots vides pour réduire le
|
||||
nombre d'appel a égal pour trier_mots_vides()
|
||||
+36
-3
@@ -102,7 +102,7 @@ int est_lettre(char c)
|
||||
/* Génération du texte */
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
static const char *MOTS_VIDES[] = {
|
||||
static char *MOTS_VIDES[] = {
|
||||
"le", "la", "les", "un", "une", "des", "du", "de", "et", "ou",
|
||||
"mais", "donc", "or", "ni", "car", "que", "qui", "quoi", "dont", "ou",
|
||||
"a", "au", "aux", "en", "dans", "par", "pour", "sur", "sous", "avec",
|
||||
@@ -226,12 +226,44 @@ typedef struct {
|
||||
int occurrences;
|
||||
} Entree;
|
||||
|
||||
|
||||
|
||||
|
||||
int doit_bouger(const char *a, const char *b)
|
||||
{
|
||||
return comparer(a, b) > 0;
|
||||
}
|
||||
|
||||
|
||||
void trier_mots_vides()
|
||||
{
|
||||
for (int i = 0; i < NB_MOTS_VIDES - 1; i++) {
|
||||
for (int j = 0; j < NB_MOTS_VIDES - 1 - i; j++) {
|
||||
if (doit_bouger(&MOTS_VIDES[j], &MOTS_VIDES[j + 1])) {
|
||||
char tmp = *MOTS_VIDES[j];
|
||||
MOTS_VIDES[j] = MOTS_VIDES[j + 1];
|
||||
MOTS_VIDES[j + 1] = &tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int est_mot_vide(const char *mot)
|
||||
{
|
||||
for (int i = 0; i < NB_MOTS_VIDES; i++) {
|
||||
if (egales(mot, MOTS_VIDES[i]))
|
||||
int borne_min = 0;
|
||||
int borne_max = NB_MOTS_VIDES;
|
||||
while(borne_min < borne_max){
|
||||
int i = (borne_max - borne_min)/2 +borne_min;
|
||||
if (egales(mot,MOTS_VIDES[i]))
|
||||
return 1;
|
||||
if (comparer(mot,MOTS_VIDES[i]) > 1)
|
||||
borne_min = i;
|
||||
else
|
||||
borne_max = i;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -403,6 +435,7 @@ double racine(double x)
|
||||
|
||||
int main(void)
|
||||
{
|
||||
trier_mots_vides();
|
||||
char **vocab = generer_vocabulaire();
|
||||
char *texte = generer_texte(vocab, NB_MOTS_TEXTE);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user