Insertion sort

Odpowiedz Nowy wątek
2011-10-08 17:53
0

Dlaczego w tym algorytmie wysypują się błędy głównie w linii, gdzie znajduje się

-ile_liczb = Console.readInt("?");

public class Insert {

private static int tablica[];
private static int ile_liczb;

private static void insertionsort(int tablica[], int ile_liczb) {
int i,j,v;

for (i=1;i<ile_liczb;i++) {
j=i;
v=tablica[i];
while ((j>0) && (tablica[j-1]>v)) {
tablica[j]=tablica[j-1];
j--;
}
tablica[j]=v;
}
}

public static void main(String[] args) {

int i,liczba;

System.out.println("Ile liczb chesz posortowac.");
ile_liczb = Console.readInt("?");
tablica = new int[ile_liczb];
for(i=0; i<ile_liczb; i++) {
tablica[i] = Console.readInt("Wprowadz liczbe #" + (i+1));
}

System.out.println("Tablica przed posortowaniem:");
for(i=0; i<ile_liczb; i++)
System.out.println(tablica[i]);
insertionsort(tablica,ile_liczb);
System.out.println("Tablica po posortowaniu:");
for(i=0; i<ile_liczb; i++)
System.out.println(tablica[i]);
}
} 
Formatowanie kodu! - Patryk27 2011-10-08 18:55

Pozostało 580 znaków

2011-10-08 18:18
bo
0

http://download.oracle.com/javase/7/docs/api/java/io/Console.html
W klasie Console nie ma metody readInt(), nie ma żadnej metody static.

Pozostało 580 znaków

2011-10-08 19:12
0

Mam coś innego, podany niżej kod programu działa.
Podajemy rozmiar tablicy w int A [] = new int[10]; następnie tych 10 liczb jest losowanych, wypisywane są one jako liczby przed posortowaniem, następnie zostają posortowane i wypisane poleceniem po posortowaniu.

Czy taki algorytm jest poprawny, zgodnie z Insertion Sort?.
W jaki sposób można dopisać co dzieje się w trakcie wykonywania sortowania, chodzi o wyświetlenie w konsoli co tam się dzieje, jak liczby te są sortowane, a nie tylko wyświetlenie przed i po posortowaniu.
Jeszcze jedna kwestia, jakimi instrukcjami można się posłużyć, żeby po wykonanym sortowaniu program wypisał liczbę wykonywanych porównań między liczbami, przestawień kluczy, jaka liczba była najwięcej razy przestawiana.


public class Isort
{
    public static void main (String [] args)
    {
        int A [] = new int[10];
        populateA(A);
        System.out.println("Liczby przed posortowaniem:");
        printA(A);

        int key;
        int i;

        for (int j = 1; j< A.length; j++)
        {
            key = A[j];
            i = j - 1;

        while ((i > -1) && (A[i] > key))
        {
            A[i+1] = A[i];
            i=i-1;
        }   
        A[i+1]=key;

        }
        System.out.println("\n \n Liczby po posortowaniu:");
        printA(A);
        }

        public static void printA (int [] B)
        {
            for (int i =0; i < B.length; i++)
            {
                System.out.print(B[i] + " ");
            }
        }

        public static int[]  populateA (int [] B)
        {
            for (int i =0; i < B.length; i++)
            {
                B[i] = (int) (Math.random()*100);
            }
            return B;
        }

}       

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