sortowanie

0

Mam klase Czasy


class Czasy {
   String nazwisko;
   int czas1;
   int czas2;
      Czasy(int czas1, int czas2, String nazwisko){
         this.czas1=czas1;
         this.czas2=czas2;
         this.nazwisko=nazwisko;
      }
}

i tworze taka tablice

Czasy tab [];

jak ja posortowac najpierw wzgledem czas1, a potem wzgledem czas2 ?
na koniec chcialabym wyswietlic wszystkie tablice, nieuporzadkowana i 2 uporzadkowane.

jeszcze pytanie jak zrobic klase main, miec wpisane od razu wartosci do tablicy i z nich korzystac, a nie np z metody typu dodaj element do tablicy.

pozdrawiam i dziekuje za pomoc

0

Interfejs Comparable i metoda compareTo.

0
import java.util.Random;

public class Main {

    public static void main( String[] args ) {
        Czasy[] czasy = new Czasy[20]; // bez sortowania
        Czasy[] czasyWgCzas1 = new Czasy[20]; // posortowana wg czas1
        Czasy[] czasyWgCzas2 = new Czasy[20]; // posortowana wg czas2

        Random random = new Random();

//      tworzenie trzech takich samych tabel, zamiast wypełniać je ręcznie, losuje liczby z przedziału 0-255
//      a nazwosko to stały ciąg znaków "Nowak" plus numer
        for ( int i = 0; i < czasy.length; i++ ) {
//          główna
            czasy[i] = new Czasy( random.nextInt( 256 ), random.nextInt( 256 ), "   Nowak " + i );
//          kolejne dwie na podstawie poprzedniej
            czasyWgCzas1[i] = new Czasy( czasy[i].czas1, czasy[i].czas2, czasy[i].nazwisko );
            czasyWgCzas2[i] = new Czasy( czasy[i].czas1, czasy[i].czas2, czasy[i].nazwisko );
        }

//      sortowanie bąbelkowe x 2
//      Jest wiele algorytmów sortowania, babelkowy wydaje sie jednym z najprostrzych
        Czasy tmp = null;
        for ( int i = 0; i < czasyWgCzas1.length - 1; i++ ) {
            for ( int j = 0; j < czasyWgCzas1.length - 1 - i; j++ ) {
//              Aby zmienić kolejność liczb w posortowanej tablicy wystarczy
//              zmienić znak mniejszości na przeciwny
//              if ( czasyWgCzas1[j].czas1 < czasyWgCzas1[j + 1].czas1 ) { // malejąco
                 if ( czasyWgCzas1[j].czas1 > czasyWgCzas1[j + 1].czas1 ) { // rosnąco
                    tmp = czasyWgCzas1[j + 1];
                    czasyWgCzas1[j + 1] = czasyWgCzas1[j];
                    czasyWgCzas1[j] = tmp;
                }
            }
        }

        for ( int i = 0; i < czasyWgCzas2.length - 1; i++ ) {
            for ( int j = 0; j < czasyWgCzas2.length - 1 - i; j++ ) {
//              if ( czasyWgCzas2[j].czas2 < czasyWgCzas2[j + 1].czas2 ) { // malejąco
                 if ( czasyWgCzas2[j].czas2 > czasyWgCzas2[j + 1].czas2 ) { // rosnąco
                    tmp = czasyWgCzas2[j + 1];
                    czasyWgCzas2[j + 1] = czasyWgCzas2[j];
                    czasyWgCzas2[j] = tmp;
                }
            }
        }

//      wypisanie na konsolę wszystkich tabel
        for ( int i = 0; i < czasy.length; i++ ) {
            System.out.println( czasy[i].nazwisko + "\t" + czasy[i].czas1 + "\t" + czasy[i].czas2 );
        }

        System.out.println("\n\n");

        for ( int i = 0; i < czasyWgCzas1.length; i++ ) {
            System.out.println( czasyWgCzas1[i].nazwisko + "\t" + czasyWgCzas1[i].czas1 + "\t" + czasyWgCzas1[i].czas2 );
        }

        System.out.println("\n\n");

        for ( int i = 0; i < czasyWgCzas2.length; i++ ) {
            System.out.println( czasyWgCzas2[i].nazwisko + "\t" + czasyWgCzas2[i].czas1 + "\t" + czasyWgCzas2[i].czas2 );
        }
    }
}

Jeżeli coś nie jest jasne, pytaj, postaram się wytłumaczyć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0