są zespołem określonej liczby zmiennych o wspólnej nazwie, które p
Transkrypt
są zespołem określonej liczby zmiennych o wspólnej nazwie, które p
Τ Struktury statyczne Tablice jednowymiarowe (wektory): są zespołem określonej liczby zmiennych o wspólnej nazwie, które ponumerowano liczbami naturalnymi − każda z nich ma przypisany na stałe tzw. indeks, Τ − zmienne 1 − indeksy 2 3 4 5 6 7 Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. − indeksy 4 5 6 7 Zmienną X nazywamy wtedy zmienną indeksową i wskazanie elementu tablicy wymaga odczytania jej aktualnej wartości 1 Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 2 start Użyte struktury danych: tablica jednowymiarowa T o długości co najmniej N, zmienna N do przechowania ilości liczb, zmienna indeksowa K do sterowania iteracją i pomocnicza zmienna S do przechowywania wyniku. S←0 K←1 S ← S + T(K) 1. S ← 0 (ustalenie początkowej wartości sumy), 2. K ← 1 (ustalenie początkowej wartości zmiennej indeksowej), 3. wykonaj co następuje N razy: 3.1. S ← S + T(K), 3.2. K ← K + 1, 4. odczytaj wartość zmiennej S. K←K+1 NIE K=N TAK po zakończeniu działania algorytmu zmienna S ma wartość sumy N liczb z tablicy T stop 3 Algorytm sortowania bąbelkowego N liczb zapamiętanych w tablicy V : Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 4 Tablice dwu – i więcej wymiarowe (macierze): są zespołem określonej liczby zmiennych o wspólnej nazwie, które oznaczono dwoma lub więcej indeksami , Użyte struktury danych: tablica jednowymiarowa V o długości co najmniej N, zmienna N do przechowania ilości liczb, zmienna indeksowa X do sterowania iteracją wewnętrzną i pomocnicza zmienna U. mogą przechowywać nie większą od ich rozmiaru liczbę elementów zbioru danych jednakowego typu zgodnego z zadeklarowanym typem tablicy 1. wykonaj co następuje N − 1 razy: 1.1. X ← 1, 1.2. dopóki X < N , wykonuj co następuje, 1.2.1. jeśli V(X + 1) < V(X) to: U ← V(X); V(X) ← V(X + 1); V(X + 1) ← U; 1.2.2. X ← X + 1. Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 3 lub użycie nazwy zmiennej o typie zgodnym z indeksem, np. T(X) Algorytm sumowania N liczb zapamiętanych w tablicy T : Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 2 Indeks może być określony przez bezpośrednie podanie wartości w odwołaniu do elementu tablicy, np. T(6), − nazwa 15 11 24 36 17 15 51 − zmienne 1 W zapisie symbolicznym T(6) oznacza 6 zmienną w tablicy T mogą przechowywać nie większą od ich długości liczbę elementów zbioru danych jednakowego typu zgodnego z zadeklarowanym typem tablicy Np. tablica T : − nazwa 15 11 24 36 17 15 51 nazwa - W 1 2 3 4 5 6 7 - indeksy kolumn 1 15 11 24 36 17 15 51 Np. tablica W : 2 14 32 28 26 19 20 43 zmienne 3 11 16 13 31 10 15 41 indeksy wierszy 5 Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 6 1 Algorytm sumowania NxM liczb zapamiętanych w tablicy W : Użyte struktury danych: tablica dwuwymiarowa W o rozmiarze co najmniej NxM, zmienne N i M do przechowania liczby zajętych „wierszy’ i „kolumn”, zmienna indeksowa K do sterowania iteracją zewnętrzną, zmienna indeksowa L do sterowania iteracją wewnętrzną i pomocnicza zmienna S do przechowywania wyniku. W zapisie symbolicznym W(2, 5) oznacza zmienną w tablicy W położoną umownie na przecięciu 2. wiersza i 5. kolumny W 1 2 3 4 6 5 1. S ← 0 (ustalenie początkowej wartości sumy), 2. K ← 1 (ustalenie początkowej wartości 1. zmiennej indeksowej), 3. wykonaj co następuje N razy: 3.1. L ← 1 (ustalenie początkowej wartości 2. zm. indeksowej), 3.2. wykonaj co następuje M razy: 3.2.1. S ← S + W(K, L), 3.2.2. L ← L + 1, 3.3 K ← K + 1, 4. odczytaj wartość zmiennej S. 7 1 15 11 24 36 17 15 51 2 14 32 28 26 19 20 43 3 11 16 13 31 10 15 41 Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 7 start są zespołem określonej liczby zmiennych różnych typów, które mają własne nazwy oraz dodatkowo nazwę całego rekordu (te zmienne są nazywane polami rekordu), K←1 mogą przechowywać określoną liczbę elementów zbioru danych o różnych typach, ale typ elementu musi być zgodny z zadeklarowanym typem pola. L←1 iteracja wewnętrzna L←L+1 S ← S + W(K, L) NIE L=M K←K+1 Np. rekord R : po zakończeniu działania algorytmu zmienna S ma wartość sumy liczb z N wierszy i M kolumn tablicy W TAK NIE 8 Rekordy: S←0 iteracja zewnętrzna Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. K=N TAK nazwa rekordu - R A 12 B ala C 7 D : pola nazwy pól (zmiennych) stop Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 9 Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. Struktury dynamiczne (implementacja wskaźnikowa) W zapisie symbolicznym B.R oznacza pole (zmienną) o nazwie B z rekordu o nazwie R. Zmienne wskaźnikowe (wskaźniki): Różne rodzaje struktur statycznych można łączyć ze sobą wartością nadawaną zmiennej wskaźnikowej jest adres, pod którym można znaleźć w pamięci inną zmienną określonego typu, Można zadeklarować np. tablicę rekordów i odwoływać się potem do pól w indeksowanych rekordach, np. B.U(3) aby można było zapisać lub odczytać element danych w zmiennej wskazywanej, trzeba znać jej adres, czyli odczytać wartość zmiennej, która na nią wskazuje, tzw. wskaźnika. U 1 2 3 4 A 12 9 41 24 B ala C 7 1 4 5 D : & @ ? nazwa wskaźnika P adres ma kot bez Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 10 7 11 wartość zmiennej wskazanej Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 12 2 W zapisie symbolicznym [P] oznacza zmienną wskazaną wartością (adresem) wskaźnika P P Czym różni się posługiwanie się adresami od posługiwania się nazwami zmiennych? X Y 7 P 2 S 7 X←Y X [P] ← [S] P Y 2 7 2 P S 2 2 S Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 2 13 Wskaźnik może zawierać nie tylko adres pojedynczej zmiennej, ale także adres struktury danych np. rekordu. S 2 S 7 2 P [P] ← [S] P P←S 2 2 S 7 2 Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 14 wskaźnik na 1. rekord Typ zmiennej wskaźnikowej musi zawsze zawierać dodatkowo określenie rodzaju obiektu, na który ta zmienna może wskazywać. G adres pole kluczowe A pole dodatkowe B - Jeśli umieścimy w rekordzie co najmniej jedno pole typu wskaźnikowego, to uzyskamy możliwość budowania dynamicznych struktur wskaźnikowych. pole wskaźnikowe C - Takie struktury powstają z identycznych rekordów o takiej samej liczbie, nazwach i typach pól, wśród których jest co najmniej jedno pole wskaźnikowe. 11 8 5 „ala” „ma” „kota” NIL adres pole wskaźnikowe D - adres adres rekord 1 rekord 2 adres NIL rekord 3 NIL – symboliczny adres pusty Wartością tego pola jest adres innego rekordu w strukturze lub symboliczny adres pusty – NIL. Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 15 W zapisie symbolicznym A.[P] oznacza pole A w rekordzie wskazanym wartością (adresem) wskaźnika P Ulega wtedy zmianie wewnętrzną struktura wskazań, która decyduje o drogach docierania do poszczególnych rekordów. A.[P.[P.[X]]] ← 21 W oparciu o możliwość kreowania w pamięci nowych rekordów o zadanym schemacie i zwalniania miejsca zajmowanego przez niepotrzebne już rekordy można zdefiniować podstawowe operacje, za pomocą których można zmieniać liczbę rekordów w strukturze dynamicznej w trakcie działania algorytmu: 21 A.[X] A.[P.[X]] A.[P.[P.[X]]] P.[X] P.[P.[X]] P.[P.[P.[X]]] A – pole kluczowe P – pole wskaźnikowe Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 16 W trakcie działania algorytmu można łatwo modyfikować dynamiczną strukturę wskaźnikową poprzez zmianę wartości pól wskaźnikowych w rekordach: poprzez podstawianie wartości jednych wskaźników pod wartości innych. Do pól rekordów w strukturze dynamicznej trzeba odwoływać się za pomocą wskaźników: X Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. X – wskaźnik na 1. rekord WSTAW (ang. INSERT) i USUŃ (ang. DELETE) 17 Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 18 3 P.[T] ← P.[S] WSTAW ( S ) – dołącz w miejscu wskazanym w strukturze wskaźnikiem S nowy rekord, który wcześniej utworzono w pamięci wg określonego dla tej struktury schematu S T Przykładowa realizacja operacji WSTAW ( S ) P.[S] T – wskaźnik pomocniczy P.[T] Utwórz nowy rekord pod wskazaniem T P.[S] ← T S G S T T A.[G] P.[G] P.[S] Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 19 Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. T ← P.[S] USUŃ ( S ) – odłącz od struktury rekord wskazywany polem wskaźnikowym rekordu wskazanego przez S i zwolnij zajmowane przez niego miejsce w pamięci S 20 T Przykładowa realizacja operacji USUŃ ( S ) P.[S] T – wskaźnik pomocniczy P.[S] ← P.[T] S G T S T A.[G] P.[G] P.[S] Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 21 P.[T] Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 22 Zwolnij miejsce w pamięci wskazane prze T T ← NIL T Możliwość użycia w trakcie działania algorytmu operacji WSTAW i USUŃ oraz możliwość zmiany powiązań pomiędzy rekordami poprzez podstawianie wartości pól wskaźnikowych decyduje o tym, że takie struktury wskaźnikowe są strukturami dynamicznymi. Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r. 23 4