Izziv 5 - Urejanje polja objektov z navadno metodo
Navodila
Napišite program v javi, ki prikazuje urejanje polja objektov z izboljšano navadno zamenjavo za urejanje po izbranem atributu. Program naj:
- ureja objekte tipa Oseba, ki predstavljajo osebe,
- generira polje naključnih oseb (izbrane velikosti),
- z metodo navadne zamenjave uredi zaporedje po poljubnem atributu naraščajoče ali padajoče,
- ob urejanju izpisuje sled izvajanja ter
- omogoči večkratno urejanje iz izpis zaporedja.
Razred Oseba
Razred Oseba vsebuje naslednje atribute: String priimek, String ime in int letoR . V razredu je še konstruktor, metoda za primerjanje in metoda za izpis.
Konstruktor brez argumentov naj generira osebo z naključnimi podatki. V ta namen lahko uporabite statična polja z vnaprej pripravljenimi imeni in priimki. Leta rojstva naj bodo v smiselnem obsegu.
Za primerjavo uporabite pristop, ki ga določa vmesnik Comparable:
interface Comparable {
public int compareTo(Object o);
}
Metoda mora omogočati primerjavo po poljubnem atributu, za kar lahko izberete pristop z nastavljanjem statičnega atributa static int atr. Vrednost tega določi, po katerem izmed treh atributov naj se izvede primerjava. Primerjava nizov naj bo po abecednem vrstnem redu, števil pa po vrednosti.
Nastavljena izbira atr naj določa tudi atribut, ki ga izpisuje metoda toString().
Urejanje
Polje Oseba[] t urejamo po izbranem atributu z izboljšano navadno zamenjavo bubblesort(Comparable[] a),kjer urejate le do mesta zadnje zamenjave.
Pri tem naj velja, da lahko urejanje poteka naraščajoče ali padajoče. Za to lahko podobno kot pri izbiri atr uporabite statični atribut smer (oba je treba pred urejanjem nastaviti na pravo vrednost). Ob urejanju naj se na koncu vsake izvedbe zunanje zanke izpisuje sled - v eni vrstici se izpišejo vsi elementi polja (vrednosti izbranega atributa) po vrsti, pri čemer navpična črta (|) ločuje urejeni del od neurejenega..
Testni razred
V testnem razredu izvedite naslednji postopek:
Vnesi velikost n
Generiraj polje tt. ki vsebuje n naključnih oseb
Zanka:
Prepiši tt v t
Izpiši polje t
Vnesi in nastavi atr
Vnesi in nastavi smer
Uredi t z navadno zamenjavo (vsebuje izpis sledi)
Izberi ponovitev ali konec
Oddaja
Vse razrede oddajte na običajen način do naslednjega ponedeljka, do 23.59 ure.