Files
TD1_DEV51_Qualite_Algo/quicksort.c

42 lines
1014 B
C
Raw Permalink Normal View History

2025-09-10 17:24:01 +02:00
#include <stdio.h>
#include <stdbool.h>
void swap(int* intArray, int num1, int num2) {
int temp = intArray[num1];
intArray[num1] = intArray[num2];
intArray[num2] = temp;
}
int partition(int* intArray, int left, int right, int pivot) {
int leftPointer = left - 1;
int rightPointer = right;
while (true) {
while (intArray[++leftPointer] < pivot) {
//do nothing
}
while (rightPointer > 0 && intArray[--rightPointer] > pivot) {
//do nothing
}
if (leftPointer >= rightPointer) {
break;
} else {
swap(intArray, leftPointer, rightPointer);
}
}
swap(intArray, leftPointer, right);
return leftPointer;
}
void quicksort(int* array, int left, int right) {
if (right - left <= 0) {
return;
} else {
int pivot = array[right];
int partitionPoint = partition(array, left, right, pivot);
quicksort(array, left, partitionPoint - 1);
quicksort(array, partitionPoint + 1, right);
}
}