j'aurais besoin d'aide au niveau d'un exercice que je doit faire sur la récursivité.
Je doit crée un algorithme du tri rapide avec pas mal de condition que rendent la chose assez compliqué (enfin je trouve)
je doit utiliser :
-une procédure "échanger" qui prend deux paramètres de type entier qui s’échange le contenue -une procédure "Déplacer" qui prend deux paramètres de type entier qui place le contenue du deuxième paramètre dans le premier -une fonction "partitionner" qui sépare en sous tableau les valeur, a gauche les plus petite que le pivot et a droite les plus grande qui prend en paramètre un tableau d'entier, un indice de début et un indice de fin et qui renvoie l'indice de la case contenant le pivot a la fin de l'opération -une procédure récursive "quicksort" qui prend en paramètre un tableau d'entier, un indice de début et un indice de fin -et une procédure afficher qui affiche le tableau
#include <stdio.h>
#include <stdlib.h>
#define TAILLE 10
void echanger(int *a, int *b);
void deplacer(int *a, int *b);
int partition (int tableau[], int debut, int fin);
void quickSort(int tableau[], int debut, int fin);
void afficher (int tableau[]);
int main()
{
int tab[10] = {10,8,4,7,15,9,7,14,12,17};
int i;
quickSort(tab, 0, 9);
afficher(tab);
return 0;
}
void echanger(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void deplacer(int *a, int *b)
{
*a=*b;
}
int partition (int tableau[], int debut, int fin)
{
int indice=debut+1;
int limite=fin;
const int pivot=tableau[debut];
while(indice<=limite)
{
if (tableau[indice]<pivot) {
deplacer(&tableau[indice-1], &tableau[indice]);
indice++;
tableau[indice-1]=pivot;
}
else {
if (tableau[indice]>=pivot) {
echanger(&tableau[indice], &tableau[limite]);
limite--;
}
}
}
return limite;
}
void quickSort(int tableau[], int debut, int fin)
{
int pivot=partition(tableau, debut, fin);
if (pivot!=0) {
quickSort(tableau, debut,pivot-1);
}
else {
return;
}
}
void afficher (int tableau[])
{
printf("\ntableau : ");
for(int i = 0; i < 10; i++)
{
printf("%d ", tableau[i]);
}
}
A ce moment le programme trie la première moiter du tableau, mais je n'arrive pas a mettre en plus la récursivité de la deuxième partie du tableau Je pensé mettre comme paramètre le tableau , le pivot, la fin. Mais ça ne marche pas j'ai testé différente possibilité mais je n'arrive pas à résoudre cet exercice
du coup je fait appelle a vous, voir si vous pouvez m'aider
Merci d'avance, et bon week-end
ps: désolé pour les faute d'orthographe.
tri rapide
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.