Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/01/2012, à 17:04

temps

[résolu] tri dans un tableau en langage C

Bonjours,
J'ai un tableau en langage C composé de valeurs croissantes selon des lois variables.
Je cherche à retrouver la position dans ce tableau de mesures faites à l'aide d'appareils sans précision.
En d'autres mots, retrouver dans quel intervalle du tableau se retrouve des valeurs aléatoires.
En exemple :

int tab[5] = {1,7,30,32,100};

quand j'ai la mesure qui égal 10 , je sais que je suis en troisème position dans le tableau soit x =2
ou quand j'ai la mesure qui égal 40 , je sais que je suis en cinquième position dans le tableau soit x =4

J'imagine faire une boucle qui décrémente la position dans le tableau, jusqu'au moment ou la valeur mesurée soit supérieur à la valeur dans le tableau. Est-ce que quelqu'un a une meilleur idée ou sait comment écrire la mienne ?
Cordialement

Dernière modification par temps (Le 22/01/2012, à 18:24)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#2 Le 22/01/2012, à 17:31

temps

Re : [résolu] tri dans un tableau en langage C

Je vais essayer en nommant ola1 la valeur mesurée

int ola =5;
while (ola1 > tab[ola]) {
      ola--;

}

et je pense retrouver à la fin la position dans le tableau dans ola
Le temps de finir le reste du code et je vous dis, si ça a marché.


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#3 Le 22/01/2012, à 17:36

Rolinh

Re : [résolu] tri dans un tableau en langage C

temps a écrit :

J'imagine faire une boucle qui décrémente la position dans le tableau, jusqu'au moment ou la valeur mesurée soit supérieur à la valeur dans le tableau.

Ça peut marcher mais un algorithme glouton n'est certainement pas la meilleure solution en terme de complexité.
Tu peux déjà avoir un meilleur résultat pour une implémentation simple en adaptant un quicksort à ton cas:
Si ton tableau fait une taille de n, alors tu prends tab[n/2] comme première valeur et tu regardes si la valeur et plus grande ou petite que celle que tu as. Ensuite, tu te concentre sur la partie voulu et tu répètes le processus. Enfin, c'est un description grossière mais ça devrait t'aider à implémenter quelque chose de simple et relativement efficace.

Hors ligne

#4 Le 22/01/2012, à 18:05

Bousky

Re : [résolu] tri dans un tableau en langage C

Rolinh a écrit :

Tu peux déjà avoir un meilleur résultat pour une implémentation simple en adaptant un quicksort à ton cas:
Si ton tableau fait une taille de n, alors tu prends tab[n/2] comme première valeur et tu regardes si la valeur et plus grande ou petite que celle que tu as. Ensuite, tu te concentre sur la partie voulu et tu répètes le processus. Enfin, c'est un description grossière mais ça devrait t'aider à implémenter quelque chose de simple et relativement efficace.

C'est pas un quicksort (qui est une méthode de tri) mais une dichotomie.


temps a écrit :
int ola =5;
while (ola1 > tab[ola]) {
      ola--;

}
for (ola = 5 ; ola1 > tab[ola] ; ola--) ;

Dernière modification par Bousky (Le 22/01/2012, à 18:08)


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#5 Le 22/01/2012, à 18:11

Rolinh

Re : [résolu] tri dans un tableau en langage C

Je sais bien que ce n'est pas un quicksort puisque je l'ai dit moi-même... D'ailleurs, le but ici n'est pas de trier. Mais le quicksort procède sur le même principe.

Hors ligne

#6 Le 22/01/2012, à 18:24

temps

Re : [résolu] tri dans un tableau en langage C

Merci pour les réponses.
Je poste en résolu.
Les trois techniques fonctionnent.
Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#7 Le 22/01/2012, à 18:42

Bousky

Re : [résolu] tri dans un tableau en langage C

Rolinh a écrit :

Mais le quicksort procède sur le même principe.

Non. Le quicksort utilise la technique dite "diviser pour reinger". La dichotomie est une méthode de résolution d'équations par approximations successives.


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#8 Le 22/01/2012, à 19:00

Rolinh

Re : [résolu] tri dans un tableau en langage C

Oui, c'est vrai. J'avais pensé au quicksort à cause de la recherche du pivot.

Hors ligne