Sortowanie bąbelkowe oraz shakesort - gdzie jest błąd ?

0

Witam, jestem początkującym w javie i potrzebuję odrobinę pomocy :)
Zacząłem od nauki podstaw czyli sortowania i o ile z innymi nie mam problemu tak te dwa mi się naprzykrzają.
Daję oba kody:
Bąbelkowe:

package babelkowe;

/**
 *
 * @author LeCezar
 */
public class Babelkowe
{
   void sortuj(int t[], int n
   {
      int temp, i = 0;
      while (i < n - 1)
      {
         if (t[i] > t[i + 1])
         {
            temp = t[i + 1];
            t[i + 1] = t[i];
            t[i] = temp;
            i = 0;
         }
         else
         {
            i++;
         }
      }
   }
}

public class program
{
   public static void main(String[] args)
   {
      int n = 5;
      int tab[] = {1, 6, 2, 3, 2};
      Babelkowe o = new Babelkowe();

      for (int x : tab)
      {
         System.out.print(x);
      }

      System.out.println();
      o.sortuj(tab, n);
      for (int x : tab)
      {
         System.out.print(x);
      }

   }
}

Oraz shakesort:

package shakesort;

/**
 *
 * @author LeCezar
 */
class Shakesort
{
   void sortuj(int t[], int n)
   {
      int lewy = 1, prawy = n - 1, k = n - 1, temp, j;

      do
      {
         for (j = prawy; j >= lewy; j--)
         {
            if (t[j - 1] > t[j])
            {
               temp = t[j - 1];
               t[j - 1] = t[j];
               t[j] = temp;
               k = j;
            }
         }
         lewy = k + 1;

         for (j = lewy; j <= prawy; j++)
         {
            if (t[j - 1] > t[j])
            {
               temp = t[j - 1];
               t[j - 1] = t[j];
               t[j] = temp;
               k = j;
            }
         }
         prawy = k - 1;
      }
      while (lewy <= prawy);
   }
}

public class program
{
   public static int[] getRandomArray(int elements) //przypisanie tablicy wartosci calkowitych
   {
      int[] tl = new int[elements]; //tworzenie pustej tablicy
      for (int k = 0; k < elements; k++) //wypełnienie tablicy daje wartosci z przedzialu 0 do 1 dlatego nalezy wymnozyc przez 100
      {
         tl[k] = (int) (Math.random() * 1000);
      }
      return tl;
   }

   public static void main(String[] args)
   {
      int n = 100000;
      int tab[] = getRandomArray(100000);
      Shakesort o = new Shakesort();
      //for(int x:tab) System.out.print(x);
      System.out.println();
      long start = System.currentTimeMillis();
      o.sortuj(tab, n);
      long stop = System.currentTimeMillis();
      System.out.println("czas wykonania w milisekundach:" + (stop - start));
      //for(int x:tab)System.out.print(x);

   }
}

Dorzucam zdjęcie jaki błąd mi wyskakuje :)

user image

Kombinowałem już z zakładaniem nowej main klasy "program" ale nie wiedziałem i tak co tam wpisać.
Dzięki za pomoc :)

0

Masz dwie klasy publiczne w jednym pliku.

0

Hmm niby i tak, ale nawet jeśli zmienię pierwsze z góry na "class babelkowe" nie zmienia to faktu, że dalej nie przejdzie.

0

Bo musisz zmienić drugie na class progress. Klasa publiczna D musi być zdefiniowana w pliku D.java.

0
bogdans napisał(a):

Bo musisz zmienić drugie na class progress. Klasa publiczna D musi być zdefiniowana w pliku D.java.

Czyli jeżeli dobrze rozumiem mam utworzyć nową klasę java o nazwie przykładowo "D". Tylko co w niej zawrzeć żeby odnośnik z bubblesort'a ją łapał i podstawiał prawidłowe dane?

0

Źle rozumiesz, Zdanie z klasą D, to było wyjaśnienie dlaczego musisz usunąć słowo public sprzed program, a nie sprzed babelkowe.

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