Problem z metodą

0

```public class Sortowanie {

    /**
     * @param args the command line arguments
     */
    public void czytaj_dane(int[]liczba){
        liczba[0] = 3;
        liczba[1] = 5;
        liczba[2] = 1;
        liczba[3] = 9;
        liczba[4] = 6;
        liczba[5] = 7;
        
        for(int i = 0; i < liczba.length; i++){
            System.out.print(liczba[i] + ",");
        }
    }
    public void przetworz_dane(int[]liczba){
        int tmp;
        for(int i = 1; i <= liczba.length -1; i++ ){
            if(liczba[i] > liczba[i+1]){
                tmp = liczba[i];
                liczba[i] = liczba[i + 1];
                liczba[i + 1] = tmp;
        } 
       }
    }
    public void wyswietl_wyniki(int[]liczba){
        for(int i = 1; i < liczba.length; i++){
            System.out.println(liczba[i]);
        }
    }
    public static void main(String[] args) {
        // TODO code application logic here
        int[] liczba = new int[6];
        Sortowanie sort = new Sortowanie();
        sort.czytaj_dane(liczba);
        sort.przetworz_dane(liczba);
        sort.wyswietl_wyniki(liczba);
    }
    
}






Piszę projekt w Javie (uczę się od podstaw i dla treningu) Sortowanie (plany rozbudowy z klasami dziedziczacymi ktore beda meic wlasne metody sortowania)
Niestety już na samym początku mam problem z metodą przetworz_dane  - nie działa i nie rozumiem dlaczego. algorytm sortowania bąbelkowego wydaje mi się, że poprawnie napisany. może brakuje drugiej pętli j ? ale jeśli tak - nie rozumiem,dlaczego powinna być druga. Bardzo proszę o pomoc i wyjaśnienie co nie działa i dlaczego
1
LoOpY_99 napisał(a):

algorytm sortowania bąbelkowego wydaje mi się, że poprawnie napisany. może brakuje drugiej pętli j ?

Masz rację - wydaje Ci się ;) Zwróć uwagę, że już na start pomijasz pierwszy element. Poza tym, twoja pętla przejdzie po tablicy raz i koniec. W ten sposób jej nie przesortujesz, a co najwyżej przestawisz kilka elementów.

Patrz przykład jak powinno to sortowanie wyglądać : Sortowanie
W skrócie, tworzysz zmienna pomocniczą, która sprawdza czy po przejściu całej tablicy wystąpiła chociaż jedna zmiana - jeśli nie, to tablica jest posortowana.

0
Lukaspar napisał(a):
LoOpY_99 napisał(a):

algorytm sortowania bąbelkowego wydaje mi się, że poprawnie napisany. może brakuje drugiej pętli j ?

Masz rację - wydaje Ci się ;) Zwróć uwagę, że już na start pomijasz pierwszy element. Poza tym, twoja pętla przejdzie po tablicy raz i koniec. W ten sposób jej nie przesortujesz, a co najwyżej przestawisz kilka elementów.

Patrz przykład jak powinno to sortowanie wyglądać : Sortowanie
W skrócie, tworzysz zmienna pomocniczą, która sprawdza czy po przejściu całej tablicy wystąpiła chociaż jedna zmiana - jeśli nie, to tablica jest posortowana.

można również tą metodę poprawić w taki sposób i również działa poprawnie i daje taki sam wynik, jak wg tego llinku co dodales ;) czyli już rozumiem co było źle i dlaczego, a to najważniejsze ;)


```    public void przetworz_dane(int[]liczba){
        int tmp;
        for(int j = 0; j < liczba.length-1; j++){
        for(int i = 0; i < liczba.length -1; i++ ){
            if(liczba[i] > liczba[i+1]){
                tmp = liczba[i];
                liczba[i] = liczba[i + 1];
                liczba[i + 1] = tmp;
           
           }
         } 
      }
    }

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