Sortowanie macierzy wielowymarowej w JAVIE


(matusia :)) #1

Czy moglibyście pomóc mi przekształcić progra w Javie tak aby sortował wiersze raz ze strony lewej do prawej, a raz z prawej do lewej...

public class TablicaSortowanie {


/**

* @param args

*/

public static void main(String[] args) {

int P[] = {8,9,23,9,9,1,0,-3,1, 5, 2, 0, 3, 8};

int P2[][] = {P,{18,29,223,29,29,21,20,-23,21, 25, 22, 20, 23, 28}};


TablicaSortowanie mnozenie = new TablicaSortowanie();

//mnozenie.show(P);

//mnozenie.show(mnozenie.sort(P));

mnozenie.show(P2[0]);

mnozenie.tablica(P2);


} 


// TODO Auto-generated method stub

public int[] sort(int[] src){

int z; 

do { 

z = 0; 

for (int i = 1; i < src.length; i++) { 

if (src[i - 1] > src[i]) { 

int pom = src[i - 1]; 

src[i - 1] = src[i]; 

src[i] = pom; 

z = 1; 

} 

} 

} while (z == 1); 

return src;

}


public void show(int[] src){

System.out.print("Posortowana tablica:"); 

for(int element : src) System.out.print(" " + element); 

System.out.print('\n'); 

}


public int[][] tablica (int[][] src){

for(int i=0; i
System.out.println(""+(i+1)+"/"+src.length);

show(src[i]);

sort(src[i]);

show(src[i]);

}

return src;


}

}

(GL1zdA) #2

Spróbuj zmienić warunek:

if (src[i - 1] > src[i])

na

if (src[i - 1] < src[i])
  • wtedy posortuje odwrotnie.

(matusia :)) #3

ok dzieki;) a czy nie da sie zrobić tak aby on sam sortował raz z jednej raz z drugiej?


(GL1zdA) #4

Jak rozumiem chcesz raz posortowac, wyswietlic posortowane w jedną stronę, posortować w odwrotnym kierunku i wyswietlic? Najprosciej zrobic dwie funkcje: sortuj i sortujOdwrotnie i je wywoływać po sobie. Lepszym rozwiązaniem jest zaimplementowanie interfejsu Comparator i podawanie go do funkcji sortującej.


(matusia :)) #5

Przepraszam a czy mógł byś trochę jaśniej...???? czy mam wpisać obie funkcje po sobie???


(GL1zdA) #6

Skopiuj całą metodę sort i nadaj jej nazwę np. sortWstecz. W tej nowej zmień warunek na ten wcześniej podany. Później po prostu wywołasz:

sort(src[i]);

show(src[i]);

sortWstecz(src[i);

show(src[i);

(matusia :)) #7

Bardzo Ci dziekuję:wink: już to robię mam nadzieje że zadziała;)

pozdrawiam serdecznie i jeszcze raz wielkie dzięki;)