forked from menault/TD4_DEV51_Qualite_Algo
90 lines
2.2 KiB
C
90 lines
2.2 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
// Fonction pour trier un tableau 1D
|
|
void sort_1d(int* array, int length) {
|
|
for (int i = 0; i < length - 1; i++) {
|
|
for (int j = 0; j < length - i - 1; j++) {
|
|
if (array[j] > array[j + 1]) {
|
|
int temp = array[j];
|
|
array[j] = array[j + 1];
|
|
array[j + 1] = temp;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Fonction pour calculer la somme d'un tableau 1D
|
|
int sum_1d(int* array, int length) {
|
|
int sum = 0;
|
|
for (int i = 0; i < length; i++) {
|
|
sum += array[i];
|
|
}
|
|
return sum;
|
|
}
|
|
|
|
// Fonction pour trier un tableau 2D basé sur la somme des lignes
|
|
void sort_2d(int** array, int rows, int cols) {
|
|
// Trier chaque ligne individuellement
|
|
for (int i = 0; i < rows; i++) {
|
|
sort_1d(array[i], cols);
|
|
}
|
|
|
|
// Trier les lignes selon leur somme
|
|
for (int i = 0; i < rows - 1; i++) {
|
|
for (int j = 0; j < rows - i - 1; j++) {
|
|
if (sum_1d(array[j], cols) > sum_1d(array[j + 1], cols)) {
|
|
int* temp = array[j];
|
|
array[j] = array[j + 1];
|
|
array[j + 1] = temp;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Fonction pour afficher un tableau 2D
|
|
void print_2d(int** array, int rows, int cols) {
|
|
for (int i = 0; i < rows; i++) {
|
|
for (int j = 0; j < cols; j++) {
|
|
printf("%d ", array[i][j]);
|
|
}
|
|
printf("\n");
|
|
}
|
|
}
|
|
|
|
int main() {
|
|
// Exemple : Tableau 2D
|
|
int rows = 3, cols = 3;
|
|
int** array = (int**)malloc(rows * sizeof(int*));
|
|
for (int i = 0; i < rows; i++) {
|
|
array[i] = (int*)malloc(cols * sizeof(int));
|
|
}
|
|
|
|
// Initialiser le tableau (exemple donné)
|
|
int data[3][3] = {{0, 3, 2}, {9, 4, 5}, {4, 1, 3}};
|
|
for (int i = 0; i < rows; i++) {
|
|
for (int j = 0; j < cols; j++) {
|
|
array[i][j] = data[i][j];
|
|
}
|
|
}
|
|
|
|
// Affichage du tableau original
|
|
printf("Tableau original :\n");
|
|
print_2d(array, rows, cols);
|
|
|
|
// Trier le tableau
|
|
sort_2d(array, rows, cols);
|
|
|
|
// Affichage du tableau trié
|
|
printf("\nTableau trié :\n");
|
|
print_2d(array, rows, cols);
|
|
|
|
// Libérer la mémoire
|
|
for (int i = 0; i < rows; i++) {
|
|
free(array[i]);
|
|
}
|
|
free(array);
|
|
|
|
return 0;
|
|
}
|