En C, comment pouvez-vous trier un tableau à deux dimensions de la même manière qu'un tableau à une dimension ?

Je veux trier un tableau à deux dimensions comme celui-ci

C:
4 2 5
1 3 7
6 9 8

pour obtenir ainsi :

C:
1 2 3
4 5 6
7 8 9


C est le langage utilisé.
Parmi les solutions possibles à ce problème, citons : Convertissez le tableau 2D fourni en tableau 1D et triez-le à l'aide d'une fonction de bibliothèque commune. Comme quelqu'un l'a suggéré ci-dessus, je pourrais utiliser une définition ou une fonction pour accéder à chaque élément à l'aide d'un index 1-D, puis utiliser un tri par insertion ou un tri à bulles pour trier les résultats. tableau[(indice) / 3] TABLEAU(indice) [(indice) % 3]

Je n'aime aucune des deux options car la première nécessiterait un espace temporaire et la seconde peut être lente. Mon tableau 2D serait grand en lignes et en colonnes. Je suis aussi paresseux et je me demande si je pourrais utiliser une fonction de bibliothèque C standard de qsort. Il semble que je ne puisse pas utiliser qsort avec un tableau 2-D pour obtenir un résultat de tous les éléments triés comme un **1-D.

On me donne un tableau 2-D, donc le convertir en tableau 1-D n'est pas une option pour moi.

Merci pour toute suggestion.
 
Dernière modification par un modérateur:

Hermes

Hail to the King
VIB
Je veux trier un tableau à deux dimensions comme celui-ci

C:
4 2 5
1 3 7
6 9 8

pour obtenir ainsi :

C:
1 2 3
4 5 6
7 8 9


C est le langage utilisé.
Parmi les solutions possibles à ce problème, citons : Convertissez le tableau 2D fourni en tableau 1D et triez-le à l'aide d'une fonction de bibliothèque commune. Comme quelqu'un l'a suggéré ci-dessus, je pourrais utiliser une définition ou une fonction pour accéder à chaque élément à l'aide d'un index 1-D, puis utiliser un tri par insertion ou un tri à bulles pour trier les résultats. tableau[(indice) / 3] TABLEAU(indice) [(indice) % 3]

Je n'aime aucune des deux options car la première nécessiterait un espace temporaire et la seconde peut être lente. Mon tableau 2D serait grand en lignes et en colonnes. Je suis aussi paresseux et je me demande si je pourrais utiliser une fonction de bibliothèque C standard de qsort. Il semble que je ne puisse pas utiliser qsort avec un tableau 2-D pour obtenir un résultat de tous les éléments triés comme un **1-D.

On me donne un tableau 2-D, donc le convertir en tableau 1-D n'est pas une option pour moi.

Merci pour toute suggestion.
Il existe 5 algorithmes de tri principaux. Chacun avec avantages en terme de vitesse d'exécution et d'empreinte mémoire et ses inconvénients.
 

Pièces jointes

  • tri.pdf
    432.4 KB · Affichages: 1

Korozif

C4H10FO2P
VIB
fonction qsort()

Exemple :

#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) {
int pa = (int)a;
int pb = (int)b;
return pa[0] - pb[0];
}

int main() {
int n = 3, m = 4;
int arr[3][4] = {{4, 3, 2, 1}, {8, 7, 6, 5}, {12, 11, 10, 9}};
qsort(arr, n, sizeof(int*), compare);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d ", arr[j]);
}
printf("\n");
}
return 0;
}



la fonction compare() compare les premiers éléments de chaque ligne et la fonction qsort() utilise cette fonction pour trier les lignes du tableau
 
Dernière édition:
Haut