Insertion sort

DB
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:51
0

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

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

Kopiuj
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]);
}
} 
Patryk27
Formatowanie kodu!
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.

DB
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:51
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.

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.