Sortowanie przez scalanie

0

Witam
Dopiero zaczynam uczyć się javy, siedzę dzisiaj całą sobotę nad tym programem i nie potrafię znaleźć błędu. Program ma za zadanie sortować liczby metodą sortowanie przez scalanie. Będę niezmiernie wdzięczny za pomoc

import java.util.Arrays;
import java.util.Random;



public class Main {
    public static void main(String Args[]){
         Tablica tablica= new Tablica();
         tablica.Wypelnienie();
         tablica.Drukuj();
         int koniec=tablica.tab.length;
         tablica.MergeSort(0,koniec);
         tablica.Drukuj();

    }
}
         class Tablica{
             int t=3;
             int tab[]=new int[t];
             int p[]=new int[t];
             int start;int stop;

             public void Wypelnienie(){
             Random r = new Random();
                for(int c=0; c<t; c++){
                   tab[c]=r.nextInt();
                   }
             }
}

public void MergeSort(int i_p, int i_k ){
//i_p poczatek
// i_k koniec
int i_s;// srodek
int i1;
int i2;
int i;

i_s= (i_p + i_k + 1)/ 2;
  if (i_s - i_p > 1){ MergeSort(i_p, i_s - 1);}
  if (i_k - i_s > 0){ MergeSort(i_s, i_k); }
  i1 = i_p;
  i2 = i_s;
  for (i= i_p; i==i_k;i++ ){
    if ((i1 == i_s) || ((i2 <= i_k) && (tab[i1] > tab[i2]))){
      p[i] = tab[i2]; i2++;
    }
    else{
      p[i]= tab[i1];
      i1=i1+1;}
 
  for (i=i_p; i<i_k; i++){tab[i] = p[i];}
 }


}
}
0
  1. nie widzę tu metody nigdzie metody "Drukuj()" a nie chce mi się jej pisać.
  2. po zwykłym przekopiowaniu eclipse wyrzuca coś o "}" pewnie jest za dużo/za mało/w złym miejscu. Polecam zacząć robić odpowiednie wcięcia i się tego trzymać. Łatwiej będzie znaleźć błąd.

int koniec=tablica.tab.length;
Definiuj metody zwracające interesujące cię wartości. Nie odwołuj się bezpośrednio do pól innej klasy.

Pozdrawiam

0
  1. Jesli jest jakis blad, to napisz czym on sie objawia.
  2. Poczytaj o konwencji uzywanej w javie, m.in. Nie nazywaj metod z wielkiej litery, nie uzywaj _
  3. Uzywaj nazw ktore cos znacza (i_p, i_k nic nie znacza, to ze napisales gdzies komentarz nie zmienia tego faktu, nazwij je po prostu poczatek i koniec)

sformatuj ten kod, zeby dalo sie go czytac

pozdrawiam

0

Pętla "for (i= i_p; i==i_k;i++ )" nie wykona się ani razu (chyba, że i_p jest równe i_k). Zamiast "==" powinno być "<".

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