Files
TD1_DEV51_Qualite_Algo/quicksort.c
2025-09-15 14:34:48 +02:00

38 lines
824 B
C

#include "quicksort.h"
// Fonction utilitaire : échanger deux entiers
static void swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
// Partition : divise le tableau autour du pivot
static int partition(int* A, int lo, int hi)
{
int pivot = A[hi]; // pivot = dernier élément
int i = lo;
for(int j = lo; j < hi; j++)
{
if(A[j] <= pivot)
{
swap(&A[i], &A[j]);
i++;
}
}
swap(&A[i], &A[hi]); // placer le pivot à la bonne position
return i; // index final du pivot
}
// Quicksort récursif
void quicksort(int* A, int lo, int hi)
{
if(lo >= hi || lo < 0) // vérification des bornes
return;
int p = partition(A, lo, hi);
quicksort(A, lo, p - 1); // tri gauche
quicksort(A, p + 1, hi); // tri droite
}