C de la programmation. Le tri des lignes dans un tableau 2D
Je suis en train de trier les éléments dans les différentes lignes d'un 2D
tableau. Je comprends comment faire pour trier les éléments à l'intérieur d'un 1D
tableau, mais je vais avoir de sérieux problèmes à la faire trier les 2D
.
Code de la 1D
tableau:
for (i = 0; i < size; i++)
{
for (j = i +1; j < size; ++j)
{
if (array2[i] > array2[j])
{
swap = array2[i];
array2[i] = array2[j];
array2[j] = swap;
}
}
}
Ce que je veux faire: 2D
Tableau avant de les trier
9 2 0 1 6 3
0 9 1 2 3 8
4 2 5 4 3 6
3 6 4 3 9 3
0 2 1 2 0 4
4 1 9 4 2 7
2D
tableau après le tri:
0 1 2 3 6 9
0 1 2 3 8 9
2 3 4 4 5 6
3 3 3 4 6 9
0 0 1 2 2 4
1 2 4 4 7 9
Mon code pour le 2D
jusqu'à présent:
taille: l'utilisateur a défini les dimensions (dans le cas ci-dessus, il est 6)
for (i = 0; i < size; i++)
{
for (j = 0; j < size; j++)
{
if(array[i][j] > array[i][j+1])
{
swap = array[i][j];
array[i][j] = array[i][j+1];
array[i][j+1] = swap;
}
}
}
De l'aide ou des conseils seraient appréciés. Merci à vous tous.
- Pourriez-vous exécuter
qsort
sur les lignes ou vous êtes tenus d'utiliser votre propre tri? - Dans votre 1D exemple le
i
boucle est faux. Il devrait êtrefor (i = 0; i < size-1; i++)
parce quej
commence ài + 1
. Cette erreur est également dans votre exemple 2D. Écrire une fonction qui trie un tableau 1D passée en argument (avec la taille). Mettre à profit pour trier chaque tableau dans votre exemple 2D. - Il me semble tri à bulles d'affectation. Il suffit de faire une fonction de tri à bulles (votre code pour 1 tableau D) et de l'appeler pour chaque ligne du tableau 2D
- Pour C++ et Java, cela peut aider. stackoverflow.com/questions/20931669/...
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez utiliser votre tableau unique algorithme de tri
(bubble sort)
pour trier le tableau à deux dimensions, alors vous devez ajouter un autrefor
boucle: Un extérieurfor
boucle qui va prendre soin de chaque ligne. Disonsm
est le nombre de lignes et den
est le numéro de la colonne.Mais ce n'est pas une approche efficace pour trier le tableau, il est temps de complexité sera
O(mn^2)
copie de tous les éléments du tableau 2d dans un tableau 1d
puis, appliquez l'algorithme de tri sur les 1d array & puis copier le tri 1d tableau le tableau 2d.
s'il vous plaît ne pas l'esprit
si vous avez une meilleure solution, alors le poster qui sera utile pour moi.
2D
tableau. Ce serait juste trier les2D
matrice comme si c'était1D
(il est, dans la mémoire). Aussi, il n'est pas nécessaire de copier le tableau de tri à bulles est en place, - la copie de tableaux est très cher.Vous pouvez simplement utiliser la STL pour le tri de tableau 2D de la ligne sage..