Schemat interaktywny
Przedstaw, za pomocą bloków, program sortujący niemalejąco elementy tablicy tabWejsciowa, metodą sortowania przez zliczanie. Załóż, że tablica tabWejsciowa zawiera tylko elementy będące liczbami naturalnymi. Algorytm przetestuj dla następującej tablicy: [0,2,8,3,7,1,0,4]
Specyfikacja problemu:
Dane:
tabWejsciowa– tablica liczb naturalnych zawierająca liczby do posortowania
Wynik
tabWynikowa– tablica liczb naturalnych zawierająca posortowane niemalejąco liczby
Przedstaw, za pomocą testera kodu, program sortujący niemalejąco elementy tablicy tabWejsciowa, metodą sortowania przez zliczanie. Możesz założyć, że tablica tabWejsciowa zawiera tylko elementy będące liczbami naturalnymi. Algorytm przetestuj dla następującej tablicy: [0,2,8,3,7,1,0,4]
Specyfikacja problemu:
Dane:
tabWejsciowa– tablica liczb naturalnych zawierająca liczby do posortowania
Wynik
tabWynikowa– tablica liczb naturalnych zawierająca posortowane niemalejąco liczby
import java.util.Arrays;
public class blockly {
public static int znajdzMax(int[] tabWejsciowa) {
int max = tabWejsciowa[0];
for(int i = 1; i < tabWejsciowa.length; i++) {
if (max < tabWejsciowa[i]) max = tabWejsciowa[i];
}
return max;
}
public static int[] zlicz(int min, int max, int[] tabWejsciowa) {
int[] tabZliczajaca = new int[max - min + 1];
for(int i = 0; i < tabZliczajaca.length; i++) {
tabZliczajaca[i] = 0;
}
for(int i = 0; i < tabWejsciowa.length; i++) {
tabZliczajaca[tabWejsciowa[i] - min]++;
}
return tabZliczajaca;
}
public static void zliczNieWieksze(int[] tabZliczajaca) {
for(int i = 1; i < tabZliczajaca.length; i++) {
tabZliczajaca[i] = tabZliczajaca[i] + tabZliczajaca[i - 1];
}
}
public static void main(String[] args) {
int[] tabWejsciowa = {0, 2, 8, 3, 7, 1, 0, 4};
int max = znajdzMax(tabWejsciowa);
int[] tabZliczajaca = new int[max + 1];
for(int i = 0; i < tabZliczajaca.length; i++) {
tabZliczajaca[i] = 0;
}
for(int i = 0; i < tabWejsciowa.length; i++) {
tabZliczajaca[tabWejsciowa[i]]++;
}
for(int i = 1; i < tabZliczajaca.length; i++) {
tabZliczajaca[i] = tabZliczajaca[i] + tabZliczajaca[i - 1];
}
int[] tabWynikowa = new int[tabWejsciowa.length];
for(int i = tabWejsciowa.length - 1; i >= 0; i--) {
int indeksTabZliczajaca = tabWejsciowa[i];
int indeksTabWynikowa = tabZliczajaca[indeksTabZliczajaca] - 1;
tabWynikowa[indeksTabWynikowa] = tabWejsciowa[i];
tabZliczajaca[indeksTabZliczajaca]--;
}
System.out.println(Arrays.toString(tabWynikowa));
}
}Korzystając z zainstalowanego na twoim komputerze środowiska, zapisz opracowany program w języku Java.