Insertion sort

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]);
}
} 
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.

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;
	    }
	
}		

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