Dlaczego jest żle - sort

Odpowiedz Nowy wątek
2011-08-10 15:12
Siema
0
public class SortApp{
    public static void main(String[] args) {
    int swap;
    int tab[] = {4,3,2,5,6,78,43,23,78};
    for (int i = 0; i < tab.length-1; i++){
        for(int j = 0; j < tab.length-1; j++){
        if(tab[j] > tab[j+1]){
            swap = tab[j];
            tab[j] = tab[j+1];
            tab[j+1] = swap;
            System.out.print(tab[j]+", ");
        }
        }
    }
    }
} 

Próbowałem przerobić ten kod na wszystkie strony ale tak jakby pętla się za mało razy wykonuje czy co?
Dlaczego nie działa?

Pozostało 580 znaków

2011-08-10 15:25
0

Ale co dokładnie się dzieje? I spróbuj wyświetlić tablicę po sortowaniu (po pętlach). Sprawdzałem u siebie w C++ i po sortowaniu wyświetla się dobrze, więc jeżeli nie to to nie wiem co.


<error>There was an error during loading user signature. Please try to reboot the Universe and check again.</error>
edytowany 1x, ostatnio: xeo545x39, 2011-08-10 15:27

Pozostało 580 znaków

2011-08-10 15:29
bo
0

Masz posortować tablicę, czy napisać kod sortujący? Prościej jest

Arrays.sort(tab);

Pozostało 580 znaków

2011-08-10 15:31
Siema
0

Takie coś mam.
Output:

3, 2, 43, 23, 2, 23, BUILD SUCCESSFUL (total time: 0 seconds) 

Pozostało 580 znaków

2011-08-10 15:36
0

Mówiłem, wyświetl tablicę po sortowaniu, bo wydaje mi się, że jak pętlę lecą to ty wyświetlasz, a tu jeszcze musi przejść kilka, żeby do końca posortować. Czyli faktycznie nie wyświetlasz posortowanej, ale w trakcie.


<error>There was an error during loading user signature. Please try to reboot the Universe and check again.</error>
edytowany 1x, ostatnio: xeo545x39, 2011-08-10 15:36

Pozostało 580 znaków

2011-08-10 15:38
bo
0

Obejrzyj kod i odpowiedz sobie na pytanie: Gdzie wyświetlam posortowaną tablicę?
Dodaj po sortowaniu

System.out.println(Arrays.toString(tab));

Pozostało 580 znaków

2011-08-10 15:43
Siema
0

@Xeo
Jeśli o to Ci chodzi to:

public class SortApp {
    public static void main(String[] args) {
    int swap,j = 0,i;
    int tab[] = {4, 3, 2, 5, 6, 78, 43, 23, 78};
    for (i = 0; i < tab.length-1; i++){
    for (j = 0; j < tab.length - 1; j++) {
        if (tab[j] > tab[j + 1]) {
        swap = tab[j];
        tab[j] = tab[j + 1];
        tab[j + 1] = swap;
 
        }
        }
 
    }
        System.out.print(tab[j] + ", ");
    }
} 

Output:

78, BUILD SUCCESSFUL (total time: 0 seconds) 

@bo
Chcę zrozumieć dlaczego to nie działa - gdybym tylko chciał posortować do programu zrobiłbym tak jak mówisz.

Pozostało 580 znaków

2011-08-10 15:46
1

Ale nie jeden element! Całą tablicę po sortowaniu wyświetl, jak to się tam w Javie robi w pętli?
Na moje oko:

public class SortApp {
    public static void main(String[] args) {
        int swap,j = 0,i;
        int tab[] = {4, 3, 2, 5, 6, 78, 43, 23, 78};
        for (i = 0; i < tab.length -1; i++){
        for (j = 0; j < tab.length - 1; j++) {
            if (tab[j] > tab[j + 1]) {
                swap = tab[j];
                tab[j] = tab[j + 1];
                tab[j + 1] = swap;
 
                }
            }
 
        }
        for (int k = 0; k < tab.length - 1; k++) {
            System.out.print(tab[k] + ", ");
        }
    }
}

<error>There was an error during loading user signature. Please try to reboot the Universe and check again.</error>
edytowany 3x, ostatnio: xeo545x39, 2011-08-10 15:48

Pozostało 580 znaków

2011-08-10 15:52
Siema
0

Proszę:

public class SortApp {
    public static void main(String[] args) {
    int swap,j = 0,i;
    int tab[] = {4, 3, 2, 5, 6, 78, 43, 23, 78};
    for (i = 0; i < tab.length-1; i++){
    for (j = 0; j < tab.length - 1; j++) {
        if (tab[j] > tab[j + 1]) {
        swap = tab[j];
        tab[j] = tab[j + 1];
        tab[j + 1] = swap;
 
        }
        }
 
    }
    System.out.print(Arrays.toString(tab)+"\n");
    for(i = 0; i <= tab.length; i++)
        System.out.print(tab[j]+", ");
    }
} 

Metoda 'bo':

[2, 3, 4, 5, 6, 23, 43, 78, 78] 

Metoda Xeo:)

78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 
Ogólnie to ten kod co teraz wkleiłeś powinien się posypać, bo: "i <= tab.length". Poza tym wyświetlasz licznik "j". Mój kod na 99% działa, a poza tym nie programuję w Javie. - xeo545x39 2011-08-10 16:06

Pozostało 580 znaków

2011-08-10 16:02
Anonim
0
 for(i = 0; i <= tab.length; i++)
            System.out.print(tab[j]+", ");

Fajnie, ze wewnatrz petli uzywasz jako index zmiennej, ktora zdefiniowales w petli ;)

Pozostało 580 znaków

2011-08-10 16:08
1
        System.out.print(Arrays.toString(tab)+"\n");

Metoda 'bo':

[2, 3, 4, 5, 6, 23, 43, 78, 78]

Czyli posortowało! Magia.

        for(i = 0; i <= tab.length; i++)
            System.out.print(tab[j]+", ");

Metoda Xeo:)

78, 78, 78, 78, 78, 78, 78, 78, 78, 78,

Czyli wyświetlasz cały czas j-oty element! To nie jest to co xeo545x39 zaproponował.

edytowany 1x, ostatnio: aurel, 2011-08-10 16:09

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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