Gyakorlati alapok

Válogatások

 

Szétválogatás egy tömbbe

 

Nem keletkezik külön eredménytömb, hanem az eredeti tömb elemei lesznek a szétválogatás szerint valamilyen módon csoportosítva. Legyen mondjuk a páros számok az alaptömb "bal" oldalára, azaz a kisebb indexű oldalra kerülnek. Ehhez számos segédváltozót kell bevezetnünk:

 

int elso = 0;
int utolso = tomb.length-1;
int seged = tomb[elso];

 

Az elso változó tehát elölről (balról) felfelé, az utolso változó pedig jobbról lefelé kezdi a számolást. A főciklus a következő feltétel teljesülése között tart:

 

while(elso < utolso)

 

Ezután a további feltételek teljesülése esetén (az elso indexű szám NEM páros, az utolso indexű szám NEM páratlan), az elemek cseréje következik. Nézzük meg a futtatható Java-kódos változatot:

 

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

 

 

 

 

 

 

 

 

import java.util.Random;

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

    System.out.println();

    int elso = 0;
    int utolso = tomb.length-1;
    int seged = tomb[elso];
    while(elso < utolso) {
        while(elso < utolso && tomb[utolso] % 2 == 0) {
        utolso--;
        }
        if(elso < utolso) {
            tomb[elso] = tomb[utolso];
            elso++;
            while(elso < utolso && tomb[elso] % 2 !=0) {
                elso++;
            }
            if(elso < utolso) {
                tomb[utolso] = tomb[elso];
                utolso--;
            }
        }
    }
    tomb[elso] = seged;

    for(int i = 0; i < tomb.length; i++){
        System.out.print(tomb[i] + " ");
    }
}

 

Végeredmény (például):
34 3 18 31 23 38 17 36 44 24
17 3 23 31 34 38 18 36 44 24