Rövidesen ezt együtt átvesszük. Addig is aki ügyes akar lenni a Kódolás Óráján, nézze át.
namespace buborekRendezes
namespace buborekRendezes
{
class sajatOsztaly
{
const int
n = 10;
public int[]
szamok = new int[n];
public void
tombFeltoltes()
{
Random rnd = new
Random();
for (int
i = 0; i < n; i++)
{
szamok[i] = rnd.Next(100);
}
}
public void
kiiro()
{
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.WriteLine("A tömb elemei: ");
Console.WriteLine();
for (int
i = 0; i < n; i++)
{
Console.WriteLine(" {0}.
elem: {1,10}", i + 1, szamok[i]);
Console.WriteLine("
~~~~~~~~~~~~~~~~~~~~");
}
}
//Rendezés:
//Állítsunk be egy logikai változót (voltCsere)
//igazra! Ez figyeli, hogy volt-e csere
//a vizsgálat során. Indítsuk el a páronkénti
//vizsgálatot (szomszédos elemek) a tömb
végétől
//visszafelé az 1-es indexű elemig! A
voltCsere-t
//állítsuk hamisra! Ha a nagyobb indexű elem
értéke
//kisebb, akkor a kapcsolót igazra állítjuk
//és kicseréljük a két elemet. A páronkénti
//vizsgálatok végén vizsgáljuk meg, hogy
volt-e csere.
//Ha volt, akkor indítsuk el újra a
vizsgálatot!
//Növeljük az alsó határt 1-gyel (mostmár ne
//az 1-es indexűig menjünk, hanem a 2-esig).
//Addig ismételjük az 1-4 lépést, amíg a
kapcsoló hamis lesz.
//Tesztelés után változtastunk annyit,hogy a
//cserét beágyazott, paraméteres
metódushívással oldjuk meg.
}
class Program
{
static void
Main(string[] args)
{
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.Title = "Buborék rendezés";
sajatOsztaly s = new sajatOsztaly();
s.tombFeltoltes();
s.kiiro();
Console.WriteLine("Buborék rendezés következik.");
Console.ReadLine();
s.buborekRendezes();
s.kiiro();
Console.ReadLine();
}
}
}MEGOLDÁS:
public void csere(int elso, int masodik)
{
int c = szamok[elso];
szamok[elso] = szamok[masodik];
szamok[masodik] = c;
}
public void
buborekRendezes()
{
//int c = 0; //ez addig kellett, míg nem volt
csere metódus
bool voltCsere = true;
int elso = 0;
while (voltCsere)
{
voltCsere = false;
int i = n - 1;
while (i > elso)
{
if
(szamok[i] < szamok[i - 1])
{
csere(i - 1, i);
//c
= szamok[i]; //ez addig kellett, míg
nem volt csere metódus
//szamok[i]
= szamok[i-1] ;
//szamok[i-1]
= c;
voltCsere = true;
}
i--;
}
elso++;
}
}