C-Programmierung. Sortieren von Zeilen in einem 2D-array
Ich versuche, mich zu Sortieren Sie die Elemente in den einzelnen Zeilen einer 2D
array. Ich verstehe, wie das Sortieren der Elemente innerhalb einer 1D
array, aber ich habe ernsthafte Mühe, es zu Sortieren 2D
.
Code für die 1D
array:
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;
}
}
}
, Was ich tun will: 2D
Array vor der Sortierung
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
array nach der Sortierung:
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
Mein code für die 2D
so weit:
Größe: benutzerdefinierte Dimensionen (im obigen Fall sind es 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;
}
}
}
Jede Hilfe oder Beratung wäre sehr geschätzt werden. Danke an Euch alle.
- Könnten Sie ausführen
qsort
über die Zeilen oder sind Sie vertraglich verpflichtet, Ihre eigene Art? - In Ihrem 1D Beispiel die
i
Schleife ist falsch. Es solltefor (i = 0; i < size-1; i++)
weilj
beginnt beii + 1
. Dieser Fehler ist auch in der 2D-Beispiel. Schreiben Sie eine Funktion sortiert einen 1D array als argument übergeben (mit der Größe). Dann bauen auf, Sortieren die einzelnen array in 2D-Beispiel. - Es scheint mir ein bubble-sort-Zuordnung. Stellen Sie nur eine Funktion des bubble-sort (Ihr code für 1-D-array), und rufen Sie für jede Zeile des 2D-Arrays
- Für C++ und Java, dies kann helfen. stackoverflow.com/questions/20931669/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie verwenden möchten Ihr single-array-Sortier-Algorithmus
(bubble sort)
zum Sortieren der zwei-dimensionales array, dann müssen Sie die anderenfor
Schleife: Eine äußerefor
Schleife, die kümmern sich um jede Zeile. Lassen Sie uns sagenm
ist die Nummer der Zeile und dien
ist die Nummer der Spalte.Aber dies ist nicht eine effiziente Vorgehensweise zum Sortieren von array, wird es Zeit, Komplexität
O(mn^2)
kopieren Sie alle Elemente des 2d-array in ein 1d-array
dann bewerben Sie sich jeder Sortier-Algorithmus auf 1d-array & kopieren Sie dann zurück sortiert 1d-array in 2d-array.
bitte don ' T mind
wenn du eine bessere Lösung dann posten, es wird hilfreich sein für mich.
2D
array. Dies würde nur Sortieren2D
array, als ob es war1D
(es ist, im Speicher). Auch gibt es keine Notwendigkeit zu kopieren, das array, bubble-sort in-place - kopieren von arrays ist sehr teuer.Können Sie einfach STL zu Sortieren 2D-array zeilenweise..