Zadání k 2. programovacímu testu Úvod do programovacích jazyků (Java) 4.12.2008 00:08 Michal Krátký Katedra informatiky Technická univerzita Ostrava Historie změn, příklady: 21 Poznámka: Pokud není řečeno jinak, posloupnost na výstupu bude setříděna vzestupně. 1
1. Zadání 1. Napište metodu quicksort(byte[] pole), která setřídí vstupní posloupnost rekurzivním algoritmem třídění rozdělováním (QuickSort). 2. Napište metodu void print(byte[] pole), která vypíše hodnoty pole. 3. V metodě main() volejte metodu quicksort pro posloupnost {5, 9, 1, -9, 8, 85, 23, -80, 10, 19, 0, -3, 33, 42, 37}. Vypište pole metodou print před a po 2. Zadání 1. Napište metodu quicksort(short[] pole), která setřídí vstupní posloupnost rekurzivním algoritmem třídění rozdělováním (QuickSort). 2. Napište metodu void print(short[] pole), která vypíše hodnoty pole. 3. V metodě main() volejte metodu quicksort pro posloupnost {500, 9012, 1, -781, 8, 58, 2389, -80, 105, 197, 0, -33, 3374, 42, 73}. Vypište pole metodou print před a po 3. Zadání 1. Napište metodu quicksort(int[] pole), která setřídí vstupní posloupnost rekurzivním algoritmem třídění rozdělováním (QuickSort). 3. V metodě main() volejte metodu quicksort pro posloupnost {500, 974012, 1, -781, 8, 89558, 2389, -80, 105, 197, 0, -33, 3374, 42452, 32}. Vypište pole metodou print před a po 4. Zadání 1. Napište metodu quicksort(double[] pole), která setřídí vstupní posloupnost rekurzivním algoritmem třídění rozdělováním (QuickSort). 2. Napište metodu void print(double[] pole), která vypíše hodnoty pole. 3. V metodě main() volejte metodu quicksort pro posloupnost {0.1, 974012.8, 1.789, -781.0, 8.4, 8.6, 238.9, -8.0, 10.5, 1.97, 0, -33.7, 7.337, 2.42, 75.4}. Vypište pole metodou print před a po 5. Zadání 1. Napište metodu quicksort(long[] pole), která setřídí vstupní posloupnost rekurzivním algoritmem třídění rozdělováním (QuickSort). 2. Napište metodu void print(long[] pole), která vypíše hodnoty pole. 3. V metodě main() volejte metodu quicksort pro posloupnost {500, 5241574012L, 1, -781, 8, -3412589558L, 2389, -80, 105, 197, 0, -33, 3374, 4, 32}. Vypište pole metodou print před a po
6. Zadání 1. Napište metodu invquicksort(int[] pole), která sestupně setřídí vstupní posloupnost rekurzivním algoritmem třídění rozdělováním (QuickSort). 3. V metodě main() volejte metodu invquicksort pro posloupnost {500, 974012, 1, -781, 8, 89558, 2389, -80, 105, 197, 0, -33, 3374, 42452, 32}. Vypište pole metodou print před a po 7. Zadání 1. Napište metodu insertsort(int[] pole), která setřídí vstupní posloupnost algoritmem třídění vkládáním (InsertSort). 2. Napište metodu void setrandom(int[] pole), která nastaví prvky pole na náhodné hodnoty < 1000. 3. Napište metodu void print(int[] pole), která vypíše hodnoty pole. 4. V metodě main() vytvořte pole 20 čísel, pomocí metody setrandom nastavte prvky pole na náhodné hodnoty a zavolejte metodu insertsort. Vypište pole metodou print před a po Poznámka: Pro vygenerování náhodného čísla použijte metodu double Math.random(), která vrátí hodnotu z intervalu 0.0, 1.0). Pro zjištění délky pole použijte atribut length, např. pole.length 8. Zadání 1. Napište metodu insertsort(double[] pole), která setřídí vstupní posloupnost algoritmem třídění vkládáním (InsertSort). 2. Napište metodu void setrandom(double[] pole), která nastaví prvky pole na náhodné hodnoty < 100.0. 3. Napište metodu void print(double[] pole), která vypíše hodnoty pole. 4. V metodě main() vytvořte pole 20 čísel, pomocí metody setrandom nastavte prvky pole na náhodné hodnoty a zavolejte metodu insertsort. Vypište pole metodou print před a po Poznámka: Pro vygenerování náhodného čísla použijte metodu double Math.random(), která vrátí hodnotu z intervalu 0.0, 1.0). Pro zjištění délky pole použijte atribut length, např. pole.length 9. Zadání 1. Napište metodu binaryinsertsort(int[] pole), která setřídí vstupní posloupnost algoritmem třídění vkládáním s binárním vyhledáváním (BinaryInsertSort). 3. V metodě main() volejte metodu binaryinsertsort pro posloupnost {500, 974012, 1, -781, 8, 89558, 2389, -80, 105, 197, 0, -33, 3374, 42452, 32}. Vypište pole metodou print před a po
10. Zadání 1. Napište metodu selectsort(int[] pole), která setřídí vstupní posloupnost algoritmem třídění výběrem (SelectSort). 2. Napište metodu void setrandom(int[] pole), která nastaví prvky pole na náhodné hodnoty < 1000. 3. Napište metodu void print(int[] pole), která vypíše hodnoty pole. 4. V metodě main() vytvořte pole 20 čísel, pomocí metody setrandom nastavte prvky pole na náhodné hodnoty a zavolejte metodu selectsort. Vypište pole metodou print před a po Poznámka: Pro vygenerování náhodného čísla použijte metodu double Math.random(), která vrátí hodnotu z intervalu 0.0, 1.0). Pro zjištění délky pole použijte atribut length, např. pole.length 11. Zadání 1. Napište metodu selectsort(double[] pole), která setřídí vstupní posloupnost algoritmem třídění výběrem (SelectSort). 2. Napište metodu void setrandom(double[] pole), která nastaví prvky pole na náhodné hodnoty < 100.0. 3. Napište metodu void print(double[] pole), která vypíše hodnoty pole. 4. V metodě main() vytvořte pole 20 čísel, pomocí metody setrandom nastavte prvky pole na náhodné hodnoty a zavolejte metodu selectsort. Vypište pole metodou print před a po Poznámka: Pro vygenerování náhodného čísla použijte metodu double Math.random(), která vrátí hodnotu z intervalu 0.0, 1.0). Pro zjištění délky pole použijte atribut length, např. pole.length 12. Zadání 1. Napište metodu invselectsort(int[] pole), která sestupně setřídí vstupní posloupnost algoritmem třídění výběrem (SelectSort). 2. Napište metodu void setrandom(int[] pole), která nastaví prvky pole na náhodné hodnoty < 1000. 3. Napište metodu void print(int[] pole), která vypíše hodnoty pole. 4. V metodě main() vytvořte pole 20 čísel, pomocí metody setrandom nastavte prvky pole na náhodné hodnoty a zavolejte metodu invselectsort. Vypište pole metodou print před a po Poznámka: Pro vygenerování náhodného čísla použijte metodu double Math.random(), která vrátí hodnotu z intervalu 0.0, 1.0). Pro zjištění délky pole použijte atribut length, např. pole.length
13. Zadání 1. Napište metodu shellsort(int[] pole), která setřídí vstupní posloupnost algoritmem třídění vkládání s ubývajícím krokem (ShellSort). 3. V metodě main() volejte metodu shellsort pro posloupnost {500, 974012, 1, -781, 8, 89558, 2389, -80, 105, 197, 0, -33, 3374, 42452, 32}. Vypište pole metodou print před a po 14. Zadání 1. Napište metodu shellsort(double[] pole), která setřídí vstupní posloupnost algoritmem třídění vkládání s ubývajícím krokem (ShellSort). 2. Napište metodu void print(double[] pole), která vypíše hodnoty pole. 3. V metodě main() volejte metodu shellsort pro posloupnost {0.1, 974012.8, 1.789, -781.0, 8.4, 8.6, 238.9, -8.0, 10.5, 1.97, 0, -33.7, 7.337, 2.42, 75.4}. Vypište pole metodou print před a po 15. Zadání 1. Napište metodu bubblesort(int[] pole), která setřídí vstupní posloupnost algoritmem bublinkové třídění (BubbleSort). 2. Napište metodu int BinarySearch(int[] pole, int item), která v poli nalezne index prvku item algoritmem binárního vyhledávání. Pokud se prvek v poli nenachází, metoda vrátí -1. 3. Napište metodu void print(int[] pole), která vypíše hodnoty pole. 4. V metodě main() volejte metodu bubblesort pro posloupnost {500, 974012, 1, -781, 8, 89558, 2389, -80, 105, 197, 0, -33, 3374, 42452, 32}. Zavolejte metodu BinarySearch nad setříděným polem pro hodnoty 32 a 31. Vypište pole metodou print před a po 16. Zadání 1. Napište metodu ripplesort(double[] pole), která setřídí vstupní posloupnost variací algoritmu bublinkové třídění RippleSort. V tomto algoritmu si pamatujeme pozici první měněné dvojice posloupnosti. V dalším cyklu pak začínáme od této pozice 1. 2. Napište metodu int BinarySearch(double[] pole, double item), která v poli nalezne index prvku item algoritmem binárního vyhledávání. Pokud se prvek v poli nenachází, metoda vrátí -1. 3. Napište metodu void print(double[] pole), která vypíše hodnoty pole. 4. V metodě main() volejte metodu ripplesort pro posloupnost {0.1, 974012.8, 1.789, 781.0, 8.4, 8.6, 238.9, 8.0, 10.5, 1.97, 0, 33.7, 7.337, 2.42, 75.4}. Zavolejte metodu BinarySearch nad setříděným polem pro hodnoty 32.0 a 31.0. Vypište pole metodou print před a po
17. Zadání 1. Napište metodu shakersort(int[] pole), která setřídí vstupní posloupnost variací algoritmu bublinkové třídění ShakerSort. 3. V metodě main() volejte metodu shakersort pro posloupnost {500, 974012, 1, 781, 8, 89558, 2389, 80, 105, 197, 0, 33, 3374, 42452, 32}. Vypište pole metodou print před a po 18. Zadání 1. Napište metodu shakersort(double[] pole), která setřídí vstupní posloupnost variací algoritmu bublinkové třídění ShakerSort. 2. Napište metodu void print(double[] pole), která vypíše hodnoty pole. 3. V metodě main() volejte metodu shakersort pro posloupnost {0.1, 974012.8, 1.789, 781.0, 8.4, 8.6, 238.9, 8.0, 10.5, 1.97, 0, 33.7, 7.337, 2.42, 75.4}. Vypište pole metodou print před a po 19. Zadání 1. Napište metodu invshakersort(int[] pole), která sestupně setřídí vstupní posloupnost variací algoritmu bublinkové třídění ShakerSort. 3. V metodě main() volejte metodu invshakersort pro posloupnost {500, 974012, 1, 781, 8, 89558, 2389, 80, 105, 197, 0, 33, 3374, 42452, 32}. Vypište pole metodou print před a po 20. Zadání 1. Napište metodu dobsort(int[] pole), která setřídí vstupní posloupnost variací algoritmu bublinkové třídění DobSort. 3. V metodě main() volejte metodu dobsort pro posloupnost {500, 974012, 1, -781, 8, 89558, 2389, -80, 105, 197, 0, -33, 3374, 42452, 32}. Vypište pole metodou print před a po
21. Zadání 1. Napište metodu radixsort(short[] pole), která setřídí vstupní posloupnost algoritmem RadixSort s M = 2. 2. Napište metodu void print(short[] pole), která vypíše hodnoty pole. 3. V metodě main() volejte metodu radixsort pro posloupnost {500, 9012, 1, 781, 8, 8958, 2389, 80, 105, 197, 0, 33, 3374, 2452, 32}. Vypište pole metodou print před a po 22. Zadání 1. Implementujte dynamické pole hodnot datového typu int. 2. Napište metodu int[] createarray(int capacity), která vytvoří pole o kapacitě capacity. 3. Napište metodu int[] insert(int []array, int item), která vloží prvek item do pole za poslední vložený prvek. Pokud se prvek do pole nevleze, dojde k realokaci pole na dvojnásobnou velikost a metoda vrátí ukazatel na nové pole. V opačném případě metoda vrátí ukazatel na původní pole. 4. Napište metodu void print(int[] pole), která vypíše všechny hodnoty, které byly do pole vloženy. 5. V metodě main() vytvořte pomocí metody createarray pole o kapacitě 5 a pak do něj v cyklu uložte 30 hodnot. Nakonec vypište pole metodou print. 23. Zadání 1. Implementujte dynamické pole hodnot datového typu byte. 2. Napište metodu byte[] createarray(int capacity), která vytvoří pole o kapacitě capacity. 3. Napište metodu byte[] insert(byte []array, byte item), která vloží prvek item do pole za poslední vložený prvek. Pokud se prvek do pole nevleze, dojde k realokaci pole na dvojnásobnou velikost a metoda vrátí ukazatel na nové pole. V opačném případě metoda vrátí ukazatel na původní pole. 4. Napište metodu void print(byte[] pole), která vypíše všechny hodnoty, které byly do pole vloženy. 5. V metodě main() vytvořte pomocí metody createarray pole o kapacitě 5 a pak do něj v cyklu uložte 30 hodnot. Nakonec vypište pole metodou print.
24. Zadání 1. Implementujte dynamické pole hodnot datového typu short. 2. Napište metodu short[] createarray(int capacity), která vytvoří pole o kapacitě capacity. 3. Napište metodu short[] insert(short []array, short item), která vloží prvek item do pole za poslední vložený prvek. Pokud se prvek do pole nevleze, dojde k realokaci pole na dvojnásobnou velikost a metoda vrátí ukazatel na nové pole. V opačném případě metoda vrátí ukazatel na původní pole. 4. Napište metodu void print(short[] pole), která vypíše všechny hodnoty, které byly do pole vloženy. 5. V metodě main() vytvořte pomocí metody createarray pole o kapacitě 5 a pak do něj v cyklu uložte 30 hodnot. Nakonec vypište pole metodou print. 25. Zadání 1. Implementujte dynamické pole hodnot datového typu long. 2. Napište metodu long[] createarray(int capacity), která vytvoří pole o kapacitě capacity. 3. Napište metodu long[] insert(long []array, long item), která vloží prvek item do pole za poslední vložený prvek. Pokud se prvek do pole nevleze, dojde k realokaci pole na dvojnásobnou velikost a metoda vrátí ukazatel na nové pole. V opačném případě metoda vrátí ukazatel na původní pole. 4. Napište metodu void print(long[] pole), která vypíše všechny hodnoty, které byly do pole vloženy. 5. V metodě main() vytvořte pomocí metody createarray pole o kapacitě 5 a pak do něj v cyklu uložte 30 hodnot. Nakonec vypište pole metodou print. 26. Zadání 1. Implementujte dynamické pole hodnot datového typu double. 2. Napište metodu double[] createarray(int capacity), která vytvoří pole o kapacitě capacity. 3. Napište metodu double[] insert(double []array, double item), která vloží prvek item do pole za poslední vložený prvek. Pokud se prvek do pole nevleze, dojde k realokaci pole na dvojnásobnou velikost a metoda vrátí ukazatel na nové pole. V opačném případě metoda vrátí ukazatel na původní pole. 4. Napište metodu void print(double[] pole), která vypíše všechny hodnoty, které byly do pole vloženy. 5. V metodě main() vytvořte pomocí metody createarray pole o kapacitě 5 a pak do něj v cyklu uložte 30 hodnot. Nakonec vypište pole metodou print.
27. Zadání 1. Implementujte setříděné statické pole hodnot datového typu int. 2. Napište metodu boolean insert(int []array, int item), která zatřídí prvek item do pole. Pro vyhledání pozice pro nový prvek použijte algoritmus sekvenční vyhledávání. Pokud se prvek do pole nevleze, metoda vrátí false. V opačném případě vrátí true. 3. Napište metodu void print(int[] pole), která vypíše všechny hodnoty, které byly do pole vloženy. 4. V metodě main() vytvořte pole o velikosti 30 a pak do něj v cyklu uložte hodnoty {30, 29,..., 0}. Nakonec vypište setříděné pole metodou print. 28. Zadání 1. Implementujte setříděné statické pole hodnot datového typu double. 2. Napište metodu boolean insert(double []array, double item), která zatřídí prvek item do pole. Pro vyhledání pozice pro nový prvek použijte algoritmus binární vyhledávání. Pokud se prvek do pole nevleze, metoda vrátí false. V opačném případě vrátí true. 3. Napište metodu void print(double[] pole), která vypíše všechny hodnoty, které byly do pole vloženy. 4. V metodě main() vytvořte pole o velikosti 30 a pak do něj v cyklu uložte hodnoty {30.0, 29.0,..., 0.0}. Nakonec vypište setříděné pole metodou print. 29. Zadání 1. Implementujte sestupně setříděné statické pole hodnot datového typu int. 2. Napište metodu boolean invinsert(int []array, int item), která sestupně zatřídí prvek item do pole. Pro vyhledání pozice pro nový prvek použijte algoritmus sekvenční vyhledávání. Pokud se prvek do pole nevleze, metoda vrátí false. V opačném případě vrátí true. 3. Napište metodu void print(int[] pole), která vypíše všechny hodnoty, které byly do pole vloženy. 4. V metodě main() vytvořte pole o velikosti 30 a pak do něj v cyklu uložte hodnoty {0, 1,..., 29, 30}. Nakonec vypište setříděné pole metodou print.
30. Zadání 1. Implementujte datovou strukturu Fronta pomocí pole pro uložení hodnot typu int. 2. Napište metodu int[] createqueue(int capacity), která vytvoří frontu o kapacitě capacity. 3. Napište metodu boolean put(int[] arrayqueue, int item), která uloží prvek na konec fronty a vrátí true. Pokud se prvek do fronty nevleze, metoda vrátí false. 4. Napište metodu int get(int[] arrayqueue), která vyjme první prvek z fronty. Pokud ve frontě není žádný prvek, metoda vrátí -1. 5. Napište metodu boolean empty(int[] arrayqueue), která vrátí true pokud je fronta prázdná. V opačném případě vrátí false. 6. V metodě main() vytvořte pomocí metody createqueue frontu o kapacitě 11 a pak do této fronty vložte v cyklu 13 prvků metodou put. V dalším cyklu 13 volejte metodu get. Vypište výsledky volání těchto metod. 31. Zadání 1. Implementujte datovou strukturu Fronta pomocí pole pro uložení hodnot typu double. 2. Napište metodu double[] createqueue(int capacity), která vytvoří frontu o kapacitě capacity. 3. Napište metodu boolean put(double[] arrayqueue, double item), která uloží prvek na konec fronty a vrátí true. Pokud se prvek do fronty nevleze, metoda vrátí false. 4. Napište metodu double get(double[] arrayqueue), která vyjme první prvek z fronty. Pokud ve frontě není žádný prvek, metoda vrátí -1. 5. Napište metodu boolean empty(double[] arrayqueue), která vrátí true pokud je fronta prázdná. V opačném případě vrátí false. 6. V metodě main() vytvořte pomocí metody createqueue frontu o kapacitě 11 a pak do této fronty vložte v cyklu 13 prvků metodou put. V dalším cyklu 13 volejte metodu get. Vypište výsledky volání těchto metod.
32. Zadání 1. Implementujte datovou strukturu Zásobník pomocí pole pro uložení hodnot typu int. 2. Napište metodu int[] createstack(int capacity), která vytvoří zásobník o kapacitě capacity. 3. Napište metodu boolean push(int[] arraystack, int item), která uloží prvek na vrchol zásobníku a vrátí true. Pokud se prvek do zásobníku nevleze, metoda vrátí false. 4. Napište metodu int pop(int[] arraystack), která vyjme prvek z vrcholu zásobníku. Pokud v zásobníku není žádný prvek, metoda vrátí -1. 5. Napište metodu boolean empty(int[] arraystack), která vrátí true pokud je zásobník prázdný. V opačném případě vrátí false. 6. V metodě main() vytvořte pomocí metody createstack zásobník o kapacitě 11 a pak do tohoto zásobníku vložte v cyklu 13 prvků metodou push. V dalším cyklu 13 volejte metodu pop. Vypište výsledky volání těchto metod. 33. Zadání 1. Implementujte datovou strukturu Zásobník pomocí pole pro uložení hodnot typu double. 2. Napište metodu double[] createstack(int capacity), která vytvoří zásobník o kapacitě capacity. 3. Napište metodu boolean push(double[] arraystack, double item), která uloží prvek na vrchol zásobníku a vrátí true. Pokud se prvek do zásobníku nevleze, metoda vrátí false. 4. Napište metodu double pop(double[] arraystack), která vyjme prvek z vrcholu zásobníku. Pokud v zásobníku není žádný prvek, metoda vrátí -1. 5. Napište metodu boolean empty(double[] arraystack), která vrátí true pokud je zásobník prázdný. V opačném případě vrátí false. 6. V metodě main() vytvořte pomocí metody createstack zásobník o kapacitě 11 a pak do tohoto zásobníku vložte v cyklu 13 prvků metodou push. V dalším cyklu 13 volejte metodu pop. Vypište výsledky volání těchto metod.