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