C#-ban kell egy olyan programot írnom ami a mátrixot sor és oszlop alapján is növekvő sorrendbe tesz. Mi a hiba?
int[,] szamok = new int[5, 5];
Random rnd = new Random();
//feltöltés
for (int i = 0; i < szamok.GetLength(0); i++)
{
for (int j = 0; j < szamok.GetLength(1); j++)
{
szamok[i, j] = rnd.Next(10, 100);
}
}
//kiíratás
for (int i = 0; i < szamok.GetLength(0); i++)
{
for (int j = 0; j < szamok.GetLength(1); j++)
{
Console.Write("{0} ", szamok[i, j]);
}
Console.WriteLine();
}
//rendezés (szar)
int max = 0;
int r = szamok.GetLength(0);
for (int i = 0; i < 5; )
{
while (r > 0)
{
int j = 0;
int k = 0;
max = szamok[i, r - 1];
while (j < r)
{
if (szamok[i, j] > max)
{
max = szamok[i, j];
k = j;
}
j++;
}
szamok[i, k] = szamok[i, r - 1];
szamok[i, r - 1] = max;
r--;
}
i++;
}
//rendezett kiírása
Console.WriteLine();
for (int i = 0; i < szamok.GetLength(0); i++)
{
for (int j = 0; j < szamok.GetLength(1); j++)
{
Console.Write("{0} ", szamok[i, j]);
}
Console.WriteLine();
}
Console.ReadLine();
Külön rendezőfüggvényt készítenék egy dimenziós tömbökre, és azt hívogatnám.
Amit te csinálsz, az nem rendezés. Többféle rendezéses algoritmus van, válassz ki egy szimpatikusat:
Nem biztos hogy jól értettem a feladatot, de itt az én megoldásom, ami persze messze nem ideális, de itt nyilván a tanuláson és a gyakorláson van a hangsúly.
Nyilván helyben rendezéssel érdekes a többdimenziós tömb rendezés.
Az én megoldásomban egy dimenziós tömböt szimulálok egyszerű osztás és maradék számítással.
//rendezés (szar)
int r = szamok.Length - 1;
while (r > 0)
{
for (int i = 0; i < r; i++)
{
int sor = i / szamok.GetLength(1);
int oszlop = i % szamok.GetLength(1);
int sorKov = (i + 1) / szamok.GetLength(1);
int oszlopKov = (i + 1) % szamok.GetLength(1);
if (szamok[sor, oszlop] > szamok[sorKov, oszlopKov])
{
int akt = szamok[sor, oszlop];
szamok[sor, oszlop] = szamok[sorKov, oszlopKov];
szamok[sorKov, oszlopKov] = akt;
}
}
r--;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!