• Nie Znaleziono Wyników

Wyszukaj element największy i najmniejszy w zbiorze liczb w następujący sposób: a

N/A
N/A
Protected

Academic year: 2021

Share "Wyszukaj element największy i najmniejszy w zbiorze liczb w następujący sposób: a"

Copied!
1
0
0

Pełen tekst

(1)

Kolokwium 1

1. Mediana jest środkowym elementem zbioru uporządkowanego (n/2, gdzie n jest liczbą elementów i ).

a. zastosuj algorytm zliczania liczby poszczególnych wartości w zbiorze nieposortowanym (podobnie jak w algorytmie sortowania przez zliczanie).

b. wyznacz wartość elementu środkowego

c. wykonaj tabelkę kosztu algorytmu zapisanego w pseudokodzie lub języku C/C++.

2. Wyszukaj element największy i najmniejszy w zbiorze liczb w następujący sposób:

a. podziel zbiór liczb na pary rozłączne (1-y i 2-i element, 3-i i 4-y element itd.) i w każdej parze wybierz liczbę większą lub równą i umieść ją w jednym zbiorze liczb oraz mniejszą lub równą w drugim zbiorze liczb

b. poszukaj w zbiorze pierwszym największej liczby i w zbiorze drugim najmniejszej liczby.

c. wykonaj tabelkę kosztu algorytmu zapisanego w pseudokodzie lub języku C/C++.

Kolokwium 2

1. Posortuj dany ciąg liczb za pomocą sortowania stogowego pokazując ciąg liczbowy w poszczególnych etapach sortowania

2. Posortuj dany ciąg liczb za pomocą sortowania przez łączenie naturalne pokazując ciąg liczbowy w poszczególnych etapach sortowania – sortowanie zewnętrzne 3. Wyszukaj daną liczbę za pomocą wyszukiwania binarnego pokazując drzewo

przeszukiwań dla następujących przypadków: wyszukiwanie liczby mniejszej od najmniejszej w danym ciągu liczbowym, wyszukiwanie liczby większej od największej w danym ciągu liczbowym oraz liczby, która znajduje się np. w elemencie tab[4].

4. Podaj tabelkę kosztu funkcji rozdzielającej serie w sortowaniu przez łączenie naturalne

5. Podaj tabelkę kosztu funkcji łączącej serie w sortowaniu przez łączenie naturalne Kolokwium 3

1. Zbuduj kolejką priorytetową z danego ciągu liczbowego za pomocą algorytmu stogowego wstępującego pokazując ciąg liczbowy w poszczególnych etapach budowy kolejki oraz usun jeden największy element z kolejki oraz odbuduj struktur ę kolejki priorytetowej za pomocą algorytmu zstępującego.

Uwaga: zadanie na ocenę 4.0.

lub

2. Zaprojektuj funkcje Abstrakcyjne typu danych o nazwie Max, który:

 Zawsze wstawia liczbę przed równą liczbą, jeśli ta jest już w ciągu. W przeciwnym wypadku wstawia ją na początku ciągu.

 Usuwa dany element- jeśli jest wiecej tych elementów, usuwa wszystkie równe zadanej wartości

 Wyszukuje zadany element.

Należy zdefiniować nagłówki funkcji oraz wyspecyfikować je wg zadanego wzoru:

void Nazwa funkcji(parametry funkcji);

{działanie:

warunki wstępne:

warunki końcowe: }

(2)

np.

void Inicjalizacja(stos & Stos);

{działanie: inicjuje stos

warunki wstępne: Stos wskazuje na pierwszy element warunki końcowe: stos zostaje zainicjowany jako pusty}

Uwaga:

Aby otrzymać oceną 5.0, należy wykonać implementację przynajmniej jednej funkcji zaprojektowanego typu danych w postaci funkcji działających na tablicy. Podczas wstawiania należy rozsuwać elementy, natomiast podczas usuwania należy zsuwać elementy tablicy.

. Przykład

Stos – algorytm

Stos jest jednym z najważniejszych typów danych, które wstawiają i usuwają dane ze zbioru danych w tym samym miejscu zwanym szczytem stosu

1. ETAP 1 - OPIS ADT

Nazwa typu: Stos elementów

Własności typu: Potrafi przechować ciąg elementów o dowolnym rozmiarze Dostępne działania:

Inicjalizacja stosu

Określenie, czy stos jest pusty Dodanie elementu do stosu, Usuwanie ze stosu,

Etap 2 - Budowa interfejsu

typedef int dane;

{typ informacji umieszczanej na stosie}

const long N=11;

struct stos { int pierwszy;

dane tab[N];

};

void Inicjalizacja(stos & Stos);

{działanie: inicjuje stos

warunki wstępne: Stos wskazuje na pierwszy element warunki końcowe: stos zostaje zainicjowany jako pusty}

inline int Pusty(stos Stos) { return Stos==NULL; } {działanie: określa, czy stos jest pusty; typ inline, bo często wywoływana

warunki wstępne: Stos jest zainicjowany,

warunki końcowe: funkcja zwraca 1, jeśli stos pusty, w przeciwnym wypadku 0}

int Wstaw( stos& Stos, dane Dana);

{działanie: dodaje element na początek ciągu, zwany szczytem stosu Stos

warunki początkowe: Dana jest daną do wstawienia na szczyt zainicjowanego stosu

warunki końcowe: jeśli to możliwe, funkcja dodaje daną Dana na szczyt stosu i zwraca wartość 1, w przeciwnym wypadku 0 }

dane Usun(stos& Stos);

{działanie: jeśli stos nie jest pusty, usuwa element ze szczytu stosu, czyli element ostatnio wstawiony do stosu warunki początkowe: Stos jest zainicjowanym niepustym stosem

warunki końcowe: funkcja usuwa element na szczycie stosu i zwraca umieszczoną tam daną}

(3)

Etap 3. Implementacja stosu za pomocą tablicy

Założenie: najefektywniejsze rozwiązanie stosu za pomocą tablicy – szczyt stosu to ostatni element wstawiony tablicy począwszy od miejsca o indeksie 0 (jeśli liczba elementów w tablicy jest równa pierwszy, to kolejny element jest wstawiany na pozycji pierwszy, o ile jest miejsce w tablicy)

void Inicjalizacja(stos& Stos) { Stos.pierwszy = 0; } inline int Pusty(stos Stos)

{ return Stos.pierwszy==0; } //stos jest pusty, gdy liczba elementów jest równa zero int Wstaw(stos& Stos, dane Dana)

{ if (Stos.pierwszy==N) return 0; //nie można wstawić do stosu, gdy jest pełen Stos.tab[Stos.pierwszy++]= Dana;

return 1;

}

dane Usun(stos& Stos) {

int pierwszy= --Stos.pierwszy; //wyznaczenie indeksu elementu usuwanego ze stosu dane d= Stos.tab[pierwszy];

return d;}

Cytaty

Powiązane dokumenty

Założenie: najefektywniejsze rozwiązanie stosu za pomocą tablicy – szczyt stosu to ostatni element wstawiony tablicy począwszy od miejsca o indeksie 0 (jeśli liczba elementów

Założenie: najefektywniejsze rozwiązanie stosu za pomocą tablicy – szczyt stosu to ostatni element wstawiony tablicy począwszy od miejsca o indeksie 0 (jeśli liczba elementów

Napisz program, który w opcjach wyświetla menu, pozwala na wybór dowolnej czynności 3.1-3.3 i dowolna liczbę razy pozwala je powtórzyć oraz na Ŝądanie kończy

Funkcja moŜe otrzymać przez listę parametrów tablice oraz liczbę elementów, natomiast powinna zwracać przez wynik.. (return) nowa

Jeśli jednak szukamy tylko wartości funkcji w określonym punkcie z , to prostsza jest metoda Lagrange’a:..

W przypadku podania błędnej danej skrypt ma wyświetlić komunikat ”Bledne dane!” Dla wczytanej cyfry 1 skrypt ma obliczać sumę 2 liczb wczytanych z klawiatury. 2 tak, aby

[r]

[r]