Gyakorlati alapok

Elemi programozási tételek egy 10 elemű tömbön

 

Egyszerű cserés rendezés

 

Ezzel az algoritmussal növekvő vagy csökkenő sorrendbe tudjuk rendezni a tömbben lévő elemeket. Az algoritmus lényege, hogy az első elem (tomb[i]) mindig össze van hasonlítva (if(tomb[i] > tomb[j])) a következő elemmel (tomb[i] + 1), amit tomb[j] reprezentál. Ha valamelyik kisebb nála, akkor a 2 elem kicserélődik. Ehhez egy ideiglenes int tarolo változót használunk fel, mindezt kényszerűségből, hiszen nem tudunk 2 változóértéket egyszerre megcserélni, hanem az egyiket átmenetileg el kell tárolnunk.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

A probléma egy másik szemszögből: jobb és bal kezünkben 1-1 db szorongatott alma. Nem tudjuk őket egyszerre megcserélni, csak úgy, ha az egyik almát letesszük az asztalra, a másikat pedig áttesszük a másik kezünkbe. Artisták persze ezt képesek megoldani almafeldobással is, ám ez nem lehetséges a programozás során, tehát nincs olyan művelet, amelyik az almafeldobást reprezentálná. (Hogyan cseréljünk meg kezeinkben 2 teli poharat? (adatcserebere) című fejezet)

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.util.Random;

public class Main {
    public static void main(String[] args) {
        int [] tomb = new int[10];
        Random rnd = new Random();
        for(int i = 0; i < tomb.length; i++){
            tomb[i] = rnd.nextInt(50) + 1;
            System.out.print(tomb[i] + " ");
        }

        System.out.println();

        for(int i = 0; i <= tomb.length - 1; i++){
            for(int j = i + 1; j <= tomb.length - 1; j++){
                if(tomb[i] > tomb[j]){
                    int tarolo = tomb[i];
                    tomb[i] = tomb[j];
                    tomb[j] = tarolo;
                }
            }
        System.out.print(tomb[i] + " ");
        }
    }
}

 

Végeredmény (például):
34 20 50 18 31 21 15 39 35 10
10 15 18 20 21 31 34 35 39 50

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Fontos szempont, hogy a lehetséges elemcsere az utolsó előtti elemig tart (tomb.length - 1). Ha ezt nem vesszük figyelembe, hibaüzenetet (tömbindex-túllépési kivételt) kapunk, ami nagyon fájdalmas lesz:

 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:16)