diff --git a/quicksort.c b/quicksort.c new file mode 100644 index 0000000..787a228 --- /dev/null +++ b/quicksort.c @@ -0,0 +1,55 @@ +#include + +// Fonction pour échanger deux entiers +void swap(int *a, int *b) { + int temp = *a; + *a = *b; + *b = temp; +} + +// Partition du tableau +int partition(int arr[], int low, int high) { + int pivot = arr[high]; // Choisir le dernier élément comme pivot + int i = low - 1; + + for (int j = low; j < high; j++) { + if (arr[j] <= pivot) { + i++; + swap(&arr[i], &arr[j]); + } + } + swap(&arr[i + 1], &arr[high]); + return i + 1; +} + +// Fonction récursive QuickSort +void quicksort(int arr[], int low, int high) { + if (low < high) { + int pi = partition(arr, low, high); + quicksort(arr, low, pi - 1); + quicksort(arr, pi + 1, high); + } +} + +// Fonction d'affichage +void printArray(int arr[], int size) { + for (int i = 0; i < size; i++) + printf("%d ", arr[i]); + printf("\n"); +} + +// Programme principal +int main() { + int arr[] = {64, 34, 25, 12, 22, 11, 90}; + int n = sizeof(arr) / sizeof(arr[0]); + + printf("Tableau original:\n"); + printArray(arr, n); + + quicksort(arr, 0, n - 1); + + printf("Tableau trie (QuickSort):\n"); + printArray(arr, n); + + return 0; +} \ No newline at end of file