Witam,
jestem uczniem drugiej klasy liceum i na dzisiejszych zajęciach pisałem pracę klasową z javy. Za zadanie miałem napisać program sortujący metodą przez kopcowanie. Program miał pozwolić na wpisanie ilu się chce elementów tablicy oraz jakich np:
dla 5:
3,2,1,5,3
Po kilku godzinach pracy w zespole 3-osobowym udało nam się napisać ten program(którego ciężko znaleźć w internecie lub jest to praktycznie niemożliwe).
Prosiłbym o sprawdzenie, czy kod który napisaliśmy jest poprawny(program działa, chodzi o to, czy jest poprawnie napisany). Oto kod:
import javax.swing.*;
public class sortowanie2
{
public static void main(String[] args)
{
int il;
String til;
til = JOptionPane.showInputDialog("podaj iloś elementów w wektorze");
il = Integer.parseInt(til);
int w[] = new int[il+1];
Wprowadzanie(w);
Wyswietlanie2(w);
w=Sortowanie(w);
Rozbieranie(w);
Wyswietlanie(w);
System.exit(0);
}
public static void Wprowadzanie(int w[])
{
int i;
String val ="0";
w[0] = Integer.parseInt(val);
for(i=1; i<w.length; i++)
{
val = JOptionPane.showInputDialog("Podaj: "+(i)+" element");
w[i] = Integer.parseInt(val);
}
}
public static void Wyswietlanie2(int w[])
{
int i;
String kopiec="";
for(i=1; i<w.length; i++)
{
kopiec += w[i] +" ";
}
JOptionPane.showMessageDialog(null, kopiec, "Komunikat112", JOptionPane.INFORMATION_MESSAGE);
}
public static void Wyswietlanie(int w[])
{
int i;
String kopiec="";
for(i=0; i<w.length-1; i++)
{
kopiec += w[i] +" ";
}
JOptionPane.showMessageDialog(null, kopiec, "Komunikat112", JOptionPane.INFORMATION_MESSAGE);
}
public static int [] Sortowanie(int w[])
{
int i, j, k, x;
for(i = 0; i <=w.length-1; i++)
{
j = i; // j-liść
k = (int) Math.floor (j / 2); // k-pozycja elementu nadrzędnego (przodka)
x = w[i]; // zapamiętuje wstawiany element
while(k>0 && w[k]<x){
w[j] = w[k];
j = k;
k = (int) Math.floor (j / 2);
}
w[j] = x;
}return w;
}
public static void Rozbieranie(int w[])
{
int i, a, j, k, m,b;
for(i=w.length-1; i>=1; i--)
{
a=w[0];
w[0] = w[i];
w[i]=a;
j=0;
for(k=0; k<i; k=j+j)
{
if(k+1<i && w[k+1]>w[k])
{
m=k+1;
}
else
{
m=k;
}
if(w[m]<=w[j])
break;
b=w[j];
w[j] = w[m];
w[m]=b;
j=m;
}
}
}
}
Mam nadzieję, że kiedyś komuś przyda się ten program.
Shalom