forked from menault/TD1_DEV51_Qualite_Algo
ajout td1
This commit is contained in:
52
heapsort.c
52
heapsort.c
@@ -78,3 +78,55 @@ void generate_array(int* array, int length)
|
||||
array[i] = rand() % 20 + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void echanger(int *a, int *b) {
|
||||
int temp = *a;
|
||||
*a = *b;
|
||||
*b = temp;
|
||||
}
|
||||
|
||||
int partitionner(int T[], int premier, int dernier, int pivot) {
|
||||
echanger(&T[pivot], &T[dernier]); // Échanger le pivot avec le dernier élément
|
||||
int j = premier;
|
||||
|
||||
for (int i = premier; i < dernier; i++) {
|
||||
if (T[i] <= T[dernier]) {
|
||||
echanger(&T[i], &T[j]);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
echanger(&T[dernier], &T[j]); // Placer le pivot à sa position finale
|
||||
return j;
|
||||
}
|
||||
|
||||
int choix_pivot(int T[], int premier, int dernier) {
|
||||
// Pour simplifier, on choisit simplement le dernier élément comme pivot
|
||||
return dernier;
|
||||
}
|
||||
|
||||
void tri_rapide(int T[], int premier, int dernier) {
|
||||
if (premier < dernier) {
|
||||
int pivot = choix_pivot(T, premier, dernier);
|
||||
pivot = partitionner(T, premier, dernier, pivot);
|
||||
tri_rapide(T, premier, pivot - 1);
|
||||
tri_rapide(T, pivot + 1, dernier);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user