Szakkörök‎ > ‎Algoritmus szakkör‎ > ‎2015-2016‎ > ‎

9. alkalom

Mohó algoritmusok implementálásakor gyakran van szükségünk a feldolgozandó adatok rendezésére. Ezt megtehetjük "kézzel", valamelyik ismert rendezés algoritmus felhasználásával, vagy hagyatkozhatunk az általunk használt nyelv standard könyvtárában található rendezés implementációra. A prioritási sornál látottakhoz hasonlóan máshogy kell eljárni primitív típusú adatok rendezésekor, és máshogy, amikor általunk definiált osztályba tartozó objektumokat rendezünk. Ez utóbbi esetben meg kell írnunk az összehasonlítást végző függvényt. Szintén a prioritási sorra hivatkozva fontos tudnunk, hogy a standard rendezés kétértékű vagy háromértékű összehasonlító függvényt vár.

Rendezés standard könyvtári eljárásokkal

Java

Primitív típusú adatok rendezése

import java.util.Arrays;
class rend {
    public static void main(String args[]) {
        int[] T = {3,44,51,2,10,-6,21,8,6,4,22};
        
        Arrays.sort(T);
        
        for(int x : T) System.out.print(x+" ");
        System.out.println();
    }
}

Objektumok rendezése

import java.util.Arrays;

class Tanulo implements Comparable<Tanulo> {
    String nev;
    int magassag;
    
    public Tanulo(String nevem, int magassagom) {
        nev = nevem;
        magassag = magassagom;
    }
    
    public int compareTo(Tanulo masik) {
        return this.magassag - masik.magassag;
    }
    
    public String toString() {
        return nev + " ("+magassag+" cm) ";
    }
}

class ObjektumRendezes {
    public static void main(String args[]) {
        Tanulo[] T = new Tanulo[5];
        
        T[0] = new Tanulo("Pisti", 194);
        T[1] = new Tanulo("Judit", 160);
        T[2] = new Tanulo("Elemér", 181);
        T[3] = new Tanulo("Ágnes", 154);
        T[4] = new Tanulo("Viola", 199);
        
        Arrays.sort(T);
        
        for(Tanulo x : T) System.out.print(x+" ");
        System.out.println();
    }
}

C++

Primitív típusú adatok rendezése

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int T[] = {3,44,51,2,10,-6,21,8,6,4,22};
    const int size = 11;
    
    sort(T, T+size);

    for (int i = 0; i < size; ++i)
        cout << T[i] << " ";
    cout << endl;
    return 0;
}

Objektumok rendezése

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

struct Tanulo {
    string nev;
    int magassag;
};


bool cmp(const Tanulo &a, const Tanulo &b)
    return a.magassag < b.magassag; 
}

int main()
{
    Tanulo T[5] = {
        {"Pisti",194},
        {"Judit", 160},
        {"Elemer", 181},
        {"Agnes", 154},
        {"Viola", 199}};
        
    
    sort(T, T+5, cmp);

    for (int i = 0; i < 5; ++i)
        cout << T[i].nev << " (" << T[i].magassag << ") ";
    cout << endl;
    return 0;
}

Feladatok