Wykład 9 - struktury rekurencyjne uporządkowane
|
|
- Arkadiusz Chrzanowski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Wykład - struktury rekurencyjne uporządkowane 1. Zstępujące drzewa Drzewa wyważone czerwono-czarne. B-drzewa - - wyszukiwanie zewnętrzne Autor: Zofia Kruczkiewicz, p.25 C USM, 1 Algorytmy i struktury danych, Wykład
2 1. Zstępujące drzewa 2--4 (wg R.Sedgewick: Algorytmy w C++): Definicja 1 Drzewo poszukiwań 2--4 to drzewo, które albo jest puste, albo zawiera trzy rodzaje węzłów: 2- węzły z jednym kluczem, lewym łączem do drzewa z mniejszymi kluczami i prawym łączem do drzewa z większymi kluczami -węzły z dwoma kluczami, lewym łączem do drzewa z mniejszymi kluczami, środkowym łączem do drzewa z kluczami o wartościach kluczy zawartych pomiędzy wartościami kluczy węzła i prawym łączem do drzewa z większymi kluczami 4-węzły z trzema kluczami i czterema łączami do drzew z wartościami kluczy zdefiniowanymi przez zakresy zawartych w węźle kluczy. Definicja 2: Zrównoważone drzewo poszukiwań 2--4 to drzewo poszukiwań 2--4 z wszystkimi łączami do pustych drzew znajdującymi się w takiej samej odległości od korzenia. Twierdzenie 1: Wyszukiwanie w n-węzłowych drzewach 2--4 odwiedza najwyżej lgn +1 węzłów Twierdzenie 2: Wstawianie do n-węzłowego drzewa 2--4 wymaga w najgorszym przypadku mniej niż lgn+1 podziałów węzła i wydaje się, że wymaga średnio mniej niż jednego podziału węzła. Podział 4-węzła jest możliwy, jeśli nie jest on potomkiem 4-węzła: przekazanie środkowego klucza do przodka i zamiana na dwa 2-węzły zamiana przodka na węzeł o 1 rząd wyższy ( 2-węzeł na -węzeł oraz -węzeł na 4-węzeł) z przyłączonymi dwoma 2-węzłami Autor: Zofia Kruczkiewicz, p.25 C USM, 2 Algorytmy i struktury danych, Wykład
3 Przykład 1: Wstaw następujący ciąg: 8, 6,,,, 11, 2, 5, 4, 10, 15, 1 do drzewa Algorytm wstawiania: 1. Wyszukaj miejsce wstawienia w węźle typu liść 2. Jeśli podczas wyszukiwania napotkasz na 4-węzeł, podziel go na dwa 2-węzly przekazując do ojca klucz środkowy oraz zamień łącza (bez zmiany dolnych węzłów oraz węzłów powyżej ojca). Po osiągnięciu dołu drzewa wstaw nowy węzeł bezpośrednio przez przekształcenie albo 2-węzła w -węzeł, albo -węzła w 4-węzeł 4. Jeśli korzeń drzewa staje się 4-węzłem, rozdziel go na trójkąt złożony z trzech 2-węzłów. Jest to jedyny przypadek wzrostu drzewa w górę o jeden poziom Autor: Zofia Kruczkiewicz, p.25 C USM, Algorytmy i struktury danych, Wykład
4 2. Drzewa wyważone czerwono-czarne (wg R.Sedgewick: Algorytmy w C++): Drzewo czerwono-czarne stanowi wygodną reprezentację abstrakcyjną drzew Polega ona na przedstawieniu drzew 2--4 jako standardowych drzew poszukiwań binarnych posiadających w każdym węźle dodatkową informację do zakodowania -węzłów i 4-węzłow. Występują dwa typy łącz: czerwone, które wiążą razem poddrzewa binarne zawierające -węzły i 4-węzły czarne, które wiążą razem drzewo Twierdzenie : Wyszukiwanie w drzewie czerwono-czarnym z n węzłami wymaga mniej niż 2lgn +2 porównań. Twierdzenie 4: Wyszukiwanie w drzewie czerwono-czarnym z n węzłami, zbudowanymi z losowych kluczy, używa średnio około 1,002 lgn porównań. Definicja : Czerwono-czarne drzewo poszukiwań binarnych jest drzewem poszukiwań binarnych, w którym każdy węzeł jest oznaczony jako czerwony albo czarny z dodatkowym ograniczeniem, że na żadnej ścieżce od zewnętrznego łącza do korzenia nie mogą wystąpić dwa kolejne czerwone węzły. Definicja 4: Zrównoważone czerwono-czarne drzewo poszukiwań binarnych jest czerwono-czarnym drzewem poszukiwań binarnych, w którym wszystkie ścieżki od zewnętrznego łącza do korzenia mają tę samą liczbę czarnych węzłów. Algorytm tworzenia drzewa czerwono-czarnego: 1. Wyszukaj w drzewie binarnym miejsce do wstawienia nowej danej jako liść 2. Podczas wyszukiwania każdy 4-węzeł rozdziel na dwa 2-węzły, przełączając bajt koloru we wszystkich trzech węzłach.. Po osiągnięciu dołu drzewa utwórz nowy czerwony węzeł dla wstawianego elementu. 4. Podczas powrotu w górę drzewa (po wywołaniu rekurencyjnym) sprawdź, czy należy wykonać rotację: 4.1. Jeśli ścieżka wyszukiwania ma dwa czerwone węzły z tą samą orientacją (dwa przejścia w dół, albo na lewo, albo na prawo), wykonaj pojedynczą rotację od górnego węzła, następnie przełącz bit koloru, aby zrobić 4-węzeł 4.2. Jeśli ścieżka wyszukiwania ma dwa czerwone łącza z różną orientacją (dwa przejścia w dół, albo na lewo i na prawo, albo na prawo i na lewo), wykonaj pojedynczą rotację od dolnego węzła, przechodząc do przypadku 4.1 w następnym kroku w górę drzewa. Autor: Zofia Kruczkiewicz, p.25 C USM, 4 Algorytmy i struktury danych, Wykład
5 Przedstawianie i przekształcanie -węzłów i 4-węzłów jako potomków -węzła za pomocą zrównoważonych poddrzew binarnych typedef ROsobaC* POsobaC; struct ROsobaC { OSOBA Dane; int Czerwony; PosobaC Lewy, Prawy; ; Autor: Zofia Kruczkiewicz, p.25 C USM, 5 Algorytmy i struktury danych, Wykład
6 Przykład 2 - Dla ciągu z przykładu 1 (8, 6,,,, 11, 2, 5, 4, 10, 15, 1) wykonaj równoważne drzewo czerwono-czarne Autor: Zofia Kruczkiewicz, p.25 C USM, 6 Algorytmy i struktury danych, Wykład
7 Autor: Zofia Kruczkiewicz, p.25 C USM, Algorytmy i struktury danych, Wykład
8 . B-drzewa - wyszukiwanie zewnętrzne (wg R.Sedgewick: Algorytmy w C++): Wyszukiwanie zewnętrzne ma ogromne znaczenie praktyczne w celu uzyskania dostępu do elementów w bardzo dużych plikach. Szczególnie ważne są takie algorytmy, które stanowią abstrakcyjny model efektywnego rozwiązania problemu wyszukiwania: dla urządzeń dyskowych lub w środowiskach z adresowaną ogromną pamięcią wirtualną. Założenia algorytmów: dostęp sekwencyjny jest mniej kosztowny niż niesekwencyjny, stąd stosowanie abstrakcyjnego modelu strony zachowującego charakterystykę urządzeń zewnętrznych (blok w systemie plików; strona w systemie pamięci wirtualnej) na stronie nie trzymamy rzeczywistych danych, lecz referencje do nich (adresy stron lub interefejs do bazy danych) oraz kopie kluczy (aby uniknąć problemów związanych z integralnością danych). W rzeczywistych implementacjach należy referencje zastąpić właściwymi mechanizmami dostępu do danych (np. mechanizm dostępu w środowisku pamięci wirtualnej) unikanie uzależniania się od własności fizycznych określonych urządzeń fizycznych w celu uzyskania szczytowej wydajności, lecz dążenie do uzyskania dobrej wydajności na wielu różnych komputerach algorytmy Szukaj, Wstaw określają dobrą wydajność projektowanym systemom Definicja 5: Strona stanowi zwarty blok danych. Sondowanie jest pierwszym dostępem do strony. Definicja 6: B-drzewo rzędu m to drzewo, które jest puste albo zawiera k-węzły z k-1 kluczami i k łączami do drzew reprezentujących każdy z k przedziałów ograniczanych przez klucze i posiada następujące własności strukturalne: dla korzenia k musi zawierać się pomiędzy 2 i m, zaś dla każdego innego węzła pomiędzy m/2 i m (tak aby zmieścił się na stronie); zaś wszystkie łącza do pustych drzew muszą się znajdować się w tej samej odległości od korzenia. Rozpatrywany model B-drzewa posiada następujące własności: uogólnia drzewa 2--4 do drzew zawierających od m/2 do m węzłów reprezentuje wielokierunkowe węzły jako tablice elementów i łączy implementuje indeks zamiast struktury wyszukiwania zawierającej elementy (węzły zewnętrzne zwierają klucze oraz referencje do elementów oraz węzły wewnętrzne kopie kluczy z referencjami do stron) rozdziela strukturę od dołu ku górze oddziela indeks od elementów. Autor: Zofia Kruczkiewicz, p.25 C USM, 8 Algorytmy i struktury danych, Wykład
9 Przykład - budowa B-drzewa dla przykładowych danych Autor: Zofia Kruczkiewicz, p.25 C USM, Algorytmy i struktury danych, Wykład
10 Autor: Zofia Kruczkiewicz, p.25 C USM, 10 Algorytmy i struktury danych, Wykład
11 Algorytm tworzenia B-drzewa 1. Wyszukaj rekurencyjnie w węzłach wewnętrznych (wysokość dodatnia B- drzewa) pierwszy klucz większy niż klucz wyszukiwania i wykonaj wyszukiwanie w poddrzewie wskazanym przez poprzedzające ten klucz łącze. 2. Po dojściu do węzła zewnętrznego (wysokość zerowa B-drzewa) sprawdź, czy jest tam element równy kluczowi lub większy od klucza i wstaw nowy element przed nim, rozsuwając elementy tablicy strony zewnętrznej. Jeśli po wstawieniu nastąpi wypełnienie tablicy, podziel węzeł na dwie połówki, tworząc nowy węzeł zewnętrzny z danymi z drugiej połówki starego węzła (po wstawieniu nowego elementu). Następnie wstaw do węzła wewnętrznego (ojca) nowy element zawierający kopię pierwszego klucza i wskazanie na nowy węzeł zewnętrzny. 4. Po wstawieniu nowego elementu do węzła wewnętrznego po podziale w kroku, jeśli nastąpiło przepełnienie tablicy węzła, podziel w taki sam sposób węzeł wewnętrzny przemieszczając połowę większych kopii kluczy oraz wskazania na odpowiadające im węzły potomne do nowego węzła wewnętrznego. Jeśli to konieczne, rozszerz podziały na całą drogę wyszukiwania aż do korzenia. Twierdzenie 5: Wyszukiwanie i wstawianie w B-drzewie rzędu m z n elementami wymagają liczby sondowań z przedziału pomiędzy log m n i log m/2 n - dla zastosowań praktycznych jest to liczba stała. Twierdzenie 6: Oczekiwana liczba stron B-drzewa rzędu m zbudowanego z n losowych elementów wynosi około 1.44 n/m. Autor: Zofia Kruczkiewicz, p.25 C USM, 11 Algorytmy i struktury danych, Wykład
12 Definicja węzła B-drzewa #ifndef STRUKT #define STRUKT const int DL=10; struct OSOBA { int Numer; char Nazwisko[DL]; ; #endif //B_drzewo plikb_drzew.h #ifndef BDRZEWO #define BDRZEWO #include "strukt.h" const int N= 4; struct Strona; typedef Strona* PStrona; struct Element { int Klucz; OSOBA* Dane; PStrona Nastepna; ; struct Strona { int Ile; Element B_tab[N]; ; typedef void(* zrob)(osoba&); void Inicjalizacja (PStrona& Wezel,int& Wysokosc); void Wstaw(PStrona& Wezel, OSOBA* N_dane, int& Wysokosc); PStrona WstawB(PStrona Wezel,int Wysokosc,OSOBA* N_dane); int Szukaj(PStrona Wezel, int Klucz, int Wysokosc, OSOBA& Dane); int Nowa_Strona(PStrona& Nowa); void Dla_kazdego(PStrona Wezel, zrob funkcja, int Wysokosc); void Dla_jednego(PStrona& Wezel, zrob funkcja, int Klucz,int Wysokosc); #endif Autor: Zofia Kruczkiewicz, p.25 C USM, 12 Algorytmy i struktury danych, Wykład
13 #include "B_MDRZEW.H" #include <string.h> #include <conio.h> #include <stdio.h> int Nowa_Strona(PStrona& Nowa) { Nowa= new Strona; //nowy węzeł albo liść if (Nowa == NULL) return 0; Nowa->Ile=0; return 1; // z zerową liczbą danych void Inicjalizacja (PStrona &Wezel,int& Wysokosc) { Wysokosc= 0; //inicjalizacja danych Bdrzewa- wysokość równa 0 Nowa_Strona(Wezel); int Szukaj(PStrona Wezel, int Klucz, int Wysokosc, OSOBA& Dane) { int i; //poszukiwanie danej wg klucza z przekazanie kopii danej Dane z liścia if (Wysokosc == 0) { for (i=0; i<wezel->ile;i++) if (Klucz==Wezel->B_tab[i].Klucz) { Dane=*Wezel->B_tab[i].Dane; //pobranie kopii znalezionej danej z liścia return 1; else //poszukiwanie liścia z danymi przechodząc przez węzły z kluczami for ( i= 0; i< Wezel->Ile; i++) if (i+1== Wezel->Ile Klucz < Wezel->B_tab[i+1].Klucz) return Szukaj(Wezel->B_tab[i].Nastepna, Klucz, Wysokosc-1, Dane); return 0; PStrona Podzial (PStrona Wezel) { int i; PStrona Nowa=NULL; if (Nowa_Strona(Nowa)) //podział liścia lub węzła z kluczami { for (i=0; i< N/2; i++) Nowa->B_tab[i]= Wezel->B_tab[N/2+i]; //do nowego węzła połowa danych Wezel->Ile= N/2; Nowa->Ile= N/2; return Nowa; //zwrot nowego węzła z połową danych starego węzła Autor: Zofia Kruczkiewicz, p.25 C USM, 1 Algorytmy i struktury danych, Wykład
14 PStrona WstawB(PStrona Wezel,int Wysokosc,OSOBA* N_dane) { int i=0, j=0; Element Pom; PStrona Nowa; int Klucz= N_dane->Numer; Pom.Klucz= Klucz; Pom.Dane=N_dane; Pom.Nastepna=NULL; if (Wysokosc== 0) //wysokość =0 oznacza poziom liści w B-drzewie while (j < Wezel->Ile) //poszukiwanie miejsca w liściu do wstawienia { if (Klucz < Wezel->B_tab[j].Klucz) break; //i przejście do wstawiania elementu z danymi else j++; // na właściwe miejsce (również po podziale liścia) else { if (Klucz < Wezel->B_tab[0].Klucz) //zmiana pierwszego klucza w pierwszym węźle, Wezel->B_tab[0].Klucz= Klucz; // jeśli pojawił się klucz mniejszy while (j < Wezel->Ile) //wstawianie klucza na właściwe miejsce, gdy wysokość B-drzewa jest { if (j+1== Wezel->Ile Klucz < Wezel->B_tab[j+1].Klucz) // większa od 0 { Nowa=WstawB(Wezel->B_tab[j++].Nastepna, Wysokosc-1,N_dane); if (Nowa== NULL) return NULL; //nie podzielono węzła Pom.Klucz= Nowa->B_tab[0].Klucz; Pom.Nastepna= Nowa; break; // przejście do wstawiania elementu z kluczem na właściwe miejsce po podziale następcy j++; for (i= Wezel->Ile; i>j;i--) Wezel->B_tab[i]= Wezel->B_tab[i-1]; //rozsuń elementy tablicy w miejscu j i wstaw Wezel->B_tab[j]= Pom; //nowy element z kluczem i danymi, gdy węzeł jest liściem Wezel->Ile++; //lub tylko z kluczem, gdy węzeł zawiera tylko klucze if (Wezel->Ile < N) return NULL; //jeśli tablica nie jest zapełniona, zakończ wstawianie else return Podzial(Wezel); //jeśli tablica jest pełna, podziel węzeł: liść albo węzeł z kluczami void Wstaw(PStrona& Wezel, OSOBA* N_dane, int& Wysokosc) { PStrona Nowa, Pom; Nowa= WstawB(Wezel, Wysokosc, N_dane); //wstawia się nową daną if (Nowa!=NULL) //nastąpił podział węzła: liścia albo węzła z kluczami { if (! Nowa_Strona(Pom)) return; Pom->Ile= 2; Pom->B_tab[0].Klucz= Wezel->B_tab[0].Klucz; Pom->B_tab[1].Klucz= Nowa->B_tab[0].Klucz; Pom->B_tab[0].Nastepna= Wezel; //referencja do starego węzła z połową danych //tworzenie nowego węzła z kluczami jako przodka podzielonego węzła Pom->B_tab[1].Nastepna=Nowa; //referencja do nowego węzła z połową danych //nowy węzeł Wezel= Pom; Wysokosc++; Autor: Zofia Kruczkiewicz, p.25 C USM, 14 Algorytmy i struktury danych, Wykład
15 void Dla_kazdego(PStrona Wezel, zrob funkcja, int Wysokosc) { int i, j; //wyświetlanie zawartości drzewa if (Wezel!=NULL) { printf("\nwys: %d\n",wysokosc); if (Wysokosc==0) //wyświetlanie zawartości liści Bdrzewa wraz z danymi for (i= 0; i< Wezel->Ile ;i++) funkcja(*wezel->b_tab[i].dane); else { for (i= 0; i<wezel->ile;i++) //wyświetlanie zawartości węzłów Bdrzewa z kluczami printf(" Klucz: %d", Wezel->B_tab[i].Klucz); printf("\n"); for (j= 0; j<wezel->ile;j++) //przejście do następców danego węzła: albo liści albo węzłów z kluczami Dla_kazdego(Wezel->B_tab[j].Nastepna,funkcja, Wysokosc-1); //wykonanie operacji na danej określonej wartością danej klucz void Dla_jednego(PStrona& Wezel,zrob funkcja, int klucz, int Wysokosc) {OSOBA Dane; if (Szukaj(Wezel, klucz, Wysokosc, Dane) ) funkcja(dane); #ifndef DODATKI //plik DODATKI.H #define DODATKI const int POZ=4; //4. funkcje ogolnego przeznaczenia void Komunikat(char*); char Menu(const int ile, char *Polecenia[]); #endif #include <conio.h> #include <stdio.h> #include "dodatki.h" char Menu(const int ile, char *Polecenia[]) { clrscr(); for (int i=0; i<ile;i++) printf("\n%s",polecenia[i]); return getch(); void Komunikat(char* s) { printf(s); getch(); Autor: Zofia Kruczkiewicz, p.25 C USM, 15 Algorytmy i struktury danych, Wykład
16 #ifndef WE_WY #define WE_WY #include "strukt.h" //plik WE_WY.H //. funkcje we/wy dla struktur void Pokaz_dane (OSOBA &Dana); OSOBA Dane(); int Podaj_klucz(); #endif #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include "we_wy.h" #include "strukt.h" OSOBA Dane() { char bufor[dl+2]; OSOBA Nowy; bufor[0]=dl; Nowy.Numer=Podaj_klucz(); printf("\nnazwisko: "); strcpy(nowy.nazwisko,cgets(bufor)); return Nowy; int Podaj_klucz() { int Klucz; do { printf("\npodaj klucz: "); while (scanf("%d",&klucz)!=1); return Klucz; void Pokaz_dane(OSOBA &Dana) {clrscr(); printf("\nnumer: %d\n", Dana.Numer); printf("nazwisko: %s\n", Dana.Nazwisko); printf("nacisnij dowolny klawisz...\n"); getch(); Autor: Zofia Kruczkiewicz, p.25 C USM, 16 Algorytmy i struktury danych, Wykład
17 //B-drzewo #include <conio.h> #include <string.h> #include <stdio.h> #include "B_MDRZEW.H" #include " DODATKI.H" #include "WE_WY.H" char *Polecenia[]={ "1 : Wstawianie Bdrzewa ", "2 : Wydruk drzewa", " : Wyswietlenie elementu drzewa", "Esc - Koniec programu"; void Wstaw_do_drzewa_B(PStrona& Poczatek, int& Wysokosc); void Dla_jednego_(PStrona &Poczatek, zrob funkcja, int Wysokosc); void main(void) { PStrona Poczatek_B; int Wysokosc; //dane Bdrzewa char Co; Inicjalizacja(Poczatek_B, Wysokosc); do { Co = Menu(POZ,Polecenia); switch(co) {case '1' : Wstaw_do_drzewa_B(Poczatek_B, Wysokosc); break; case '2' : Dla_kazdego(Poczatek_B, Pokaz_dane, Wysokosc); break; case '' : Dla_jednego_(Poczatek_B, Pokaz_dane, Wysokosc); break; case 2 : Komunikat("\nKoniec programu"); break; default : Komunikat("\nZla opcja"); while (Co!=2); void Wstaw_do_drzewa_B(PStrona& Poczatek, int& Wysokosc) {OSOBA* Dana = new OSOBA; if (Dana==NULL) Komunikat("\nBrak pamieci"); else {*Dana= Dane(); Wstaw(Poczatek, Dana, Wysokosc); void Dla_jednego_(PStrona &Poczatek, zrob funkcja, int Wysokosc) { int Klucz; if (Poczatek==NULL) Komunikat("\nDrzewo puste"); else { Klucz=Podaj_klucz(); Dla_jednego(Poczatek,Pokaz_dane, Klucz, Wysokosc); Autor: Zofia Kruczkiewicz, p.25 C USM, 1 Algorytmy i struktury danych, Wykład
Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)
Wykład 7 Abstrakcyjne typy danych słownik (lista symboli) Definicja słownika: Słownik (tablica lub lista symboli) to struktura danych zawierająca elementy z kluczami, która pozwala na przeprowadzanie dwóch
1. Abstrakcyjne typy danych
1. Abstrakcyjne typy danych 1.1.Glówne cechy typów danych stosowanych w programach: 1) musza byc dostosowane do rozwiazywanego problemu 2) musza zawierac dwa rodzaje informacji: 2.1) zbiór wlasnosci 2.2)
Etap 2 - Budowa interfejsu. typedef struct ELEMENT* stos; struct ELEMENT { dane Dane; stos Nastepny; }; struct kolejka { stos Poczatek, Koniec; };
Wykład 6_2 Abstrakcyjne typy danych kolejki. Implementacja za pomocą tablicy i rekurencyjnej struktury danych czyli listy wiązanej Etap 1 - Opis ADT Nazwa typu: Kolejka elementów Własności typu: Potrafi
Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych
Wykład 6_ Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych Abstrakcyjny typ danych Klient korzystający z abstrakcyjnego typu danych: o ma do dyspozycji jedynie
Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik
Wykład X Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2016 c Copyright 2016 Janusz Słupik Drzewa binarne Drzewa binarne Drzewo binarne - to drzewo (graf spójny bez cykli) z korzeniem (wyróżnionym
ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.
POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie
np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q:
Wykład 4 Wyszukiwania w tablicach posortowanych 1. Wyszukiwanie sekwencyjne w tablicy posortowanej 2. Wyszukiwanie binarne bez powtórzeń 3. Wyszukiwanie binarne z powtórzeniami 1 2 3 4 5 6 7 8 9 10 11
Wykład 7 Abstrakcyjne typy danych kolejka priorytetowa
Wykład 7 Abstrakcyjne typy danych kolejka priorytetowa Definicja kolejki priorytetowej: Kolejka priorytetowa to struktura danych zawierająca elementy z kluczami, która pozwala na przeprowadzanie dwóch
Wykład 2. Drzewa zbalansowane AVL i 2-3-4
Wykład Drzewa zbalansowane AVL i -3-4 Drzewa AVL Wprowadzenie Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Drzewa -3-4 Definicja drzewa -3-4 Operacje wstawiania
Podstawy Informatyki. Metody dostępu do danych
Podstawy Informatyki c.d. alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej 2 Sformułowanie
Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski
Algorytmy i struktury danych Wykład 5: Drzewa Dr inż. Paweł Kasprowski pawel@kasprowski.pl Drzewa Struktury przechowywania danych podobne do list ale z innymi zasadami wskazywania następników Szczególny
Przykładowe B+ drzewo
Przykładowe B+ drzewo 3 8 1 3 7 8 12 Jak obliczyć rząd indeksu p Dane: rozmiar klucza V, rozmiar wskaźnika do bloku P, rozmiar bloku B, liczba rekordów w indeksowanym pliku danych r i liczba bloków pliku
Wykład 5_2 Algorytm ograniczania liczby serii za pomocą kopcowego rozdzielania serii początkowych
Wykład 5_2 Algorytm ograniczania liczby serii za pomocą kopcowego rozdzielania serii początkowych Założenia: 1. Pamięć wewnętrzna ma ograniczone rozmiary 2. Pamięć zewnętrzna ma rozmiary nieograniczone
Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.
Drzewa binarne Każdy węzeł w drzewie posiada pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste. Uporządkowanie. Zakładamy, że klucze są różne. Klucze leżące
Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)
Drzewa ST i VL Drzewa poszukiwań binarnych (ST) Drzewo ST to dynamiczna struktura danych (w formie drzewa binarnego), która ma tą właściwość, że dla każdego elementu wszystkie elementy w jego prawym poddrzewie
Drzewa czerwono-czarne.
Binboy at Sphere http://binboy.sphere.p l Drzewa czerwono-czarne. Autor: Jacek Zacharek Wstęp. Pojęcie drzewa czerwono-czarnego (red-black tree) zapoczątkował Rudolf Bayer w książce z 1972 r. pt. Symmetric
Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski
: idea Indeksowanie: Drzewo decyzyjne, przeszukiwania binarnego: F = {5, 7, 10, 12, 13, 15, 17, 30, 34, 35, 37, 40, 45, 50, 60} 30 12 40 7 15 35 50 Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski
Wykład 8. Drzewa AVL i 2-3-4
Wykład 8 Drzewa AVL i 2-3-4 1 Drzewa AVL Ø Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Ø Drzewa 2-3-4 Definicja drzewa 2-3-4 Operacje wstawiania i usuwania Złożoność
Definicja pliku kratowego
Pliki kratowe Definicja pliku kratowego Plik kratowy (ang grid file) jest strukturą wspierająca realizację zapytań wielowymiarowych Uporządkowanie rekordów, zawierających dane wielowymiarowe w pliku kratowym,
WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste
Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Drzewa i struktury drzewiaste www.agh.edu.pl DEFINICJA DRZEWA Drzewo
Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe
I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom
Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują
Algorytmy i struktury danych. wykład 5
Plan wykładu: Wskaźniki. : listy, drzewa, kopce. Wskaźniki - wskaźniki Wskaźnik jest to liczba lub symbol który w ogólności wskazuje adres komórki pamięci. W językach wysokiego poziomu wskaźniki mogą również
Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.
Drzewa binarne Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0 i T 1 są drzewami binarnymi to T 0 T 1 jest drzewem binarnym Np. ( ) ( ( )) Wielkość drzewa
Wykład 2. Drzewa poszukiwań binarnych (BST)
Wykład 2 Drzewa poszukiwań binarnych (BST) 1 O czym będziemy mówić Definicja Operacje na drzewach BST: Search Minimum, Maximum Predecessor, Successor Insert, Delete Struktura losowo budowanych drzew BST
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów
2012-01-16 PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew
0-0-6 PLAN WYKŁADU Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew BAZY DANYCH Wykład 9 dr inż. Agnieszka Bołtuć INDEKSY - DEFINICJE Indeksy to pomocnicze struktury
Algorytmy i Struktury Danych
Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu
Drzewa poszukiwań binarnych
1 Cel ćwiczenia Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet ielonogórski Drzewa poszukiwań binarnych Ćwiczenie
Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)
Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013
Wykład 6. Drzewa poszukiwań binarnych (BST)
Wykład 6 Drzewa poszukiwań binarnych (BST) 1 O czym będziemy mówić Definicja Operacje na drzewach BST: Search Minimum, Maximum Predecessor, Successor Insert, Delete Struktura losowo budowanych drzew BST
Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe
Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie
Wykład 3. Drzewa czerwono-czarne
Wykład 3 Drzewa czerwono-czarne 1 Drzewa zbalansowane Wprowadzenie Drzewa czerwono-czarne Definicja, wysokość drzewa Rotacje, operacje wstawiania i usuwania Literatura Cormen, Leiserson, Rivest, Wprowadzenie
Bazy danych - BD. Indeksy. Wykład przygotował: Robert Wrembel. BD wykład 7 (1)
Indeksy Wykład przygotował: Robert Wrembel BD wykład 7 (1) 1 Plan wykładu Problematyka indeksowania Podział indeksów i ich charakterystyka indeks podstawowy, zgrupowany, wtórny indeks rzadki, gęsty Indeks
WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5
WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne
Porządek symetryczny: right(x)
Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)
Sortowanie. Bartman Jacek Algorytmy i struktury
Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39
Wysokość drzewa Głębokość węzła
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
ALGORYTMY I STRUKTURY DANYCH
LGORTM I STRUKTUR DNH Temat 6: Drzewa ST, VL Wykładowca: dr inż. bigniew TRPT e-mail: bigniew.tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/ Współautorami wykładu
Sortowanie bąbelkowe
1/98 Sortowanie bąbelkowe (Bubble sort) prosty i nieefektywny algorytm sortowania wielokrotnie przeglądamy listę elementów, porównując dwa sąsiadujące i zamieniając je miejscami, jeśli znajdują się w złym
Co nie powinno być umieszczane w plikach nagłówkowych:
Zawartość plików nagłówkowych (*.h) : #include #define ESC 27 dyrektywy dołączenia definicje stałych #define MAX(x,y) ((x)>(y)?(x):(y)) definicje makr int menu(char* tab[], int ilosc); struct
< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >
Typy indeksów Indeks jest zakładany na atrybucie relacji atrybucie indeksowym (ang. indexing field). Indeks zawiera wartości atrybutu indeksowego wraz ze wskaźnikami do wszystkich bloków dyskowych zawierających
Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz
Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Funkcje przetwarzające teksty (biblioteka ) - tworzenie własnych
Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna
Podstawy Programowania 2 Drzewa bst - część druga Arkadiusz Chrobot Zakład Informatyki 12 maja 2016 1 / 8 Plan Wstęp Wyszukiwanie w BST Minimalny i maksymalny klucz Wskazany klucz Zmiany w funkcji main()
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH Temat 4: Realizacje dynamicznych struktur danych. Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/
Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.
Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt
. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019
.. Podstawy Programowania 2 Drzewa bst - część druga Arkadiusz Chrobot Zakład Informatyki 12 maja 2019 1 / 39 Plan.1 Wstęp.2 Wyszukiwanie w BST Minimalny i maksymalny klucz Wskazany klucz.3.4 Zmiany w
Drzewa wyszukiwań binarnych (BST)
Drzewa wyszukiwań binarnych (BST) Krzysztof Grządziel 12 czerwca 2007 roku 1 Drzewa Binarne Drzewa wyszukiwań binarnych, w skrócie BST (od ang. binary search trees), to szczególny przypadek drzew binarnych.
Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2
Algorytmy i struktury danych Wykład 6 Tablice rozproszone cz. 2 Na poprzednim wykładzie Wiele problemów wymaga dynamicznych zbiorów danych, na których można wykonywać operacje: wstawiania (Insert) szukania
TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;
Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst
Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz
Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres: Funkcje czyli wieloużywalność kodu Omówienie przekazywania argumentów: "przez
Wstęp do programowania
Wstęp do programowania Stosy, kolejki, drzewa Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VII Jesień 2013 1 / 25 Listy Lista jest uporządkowanym zbiorem elementów. W Pythonie
Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.
Wykład 1 Wprowadzenie do algorytmów Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami Wykaz literatury 1. N. Wirth - Algorytmy+Struktury Danych = Programy, WNT Warszawa
Algorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Drzewa poszukiwań binarnych. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.
Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.
Spis treści 1 Drzewa 1.1 Drzewa binarne 1.1.1 Zadanie 1.1.2 Drzewo BST (Binary Search Tree) 1.1.2.1 Zadanie 1 1.1.2.2 Zadanie 2 1.1.2.3 Zadanie 3 1.1.2.4 Usuwanie węzła w drzewie BST 1.1.2.5 Zadanie 4
Algorytmy i Struktury Danych, 9. ćwiczenia
Algorytmy i Struktury Danych, 9. ćwiczenia 206-2-09 Plan zajęć usuwanie z B-drzew join i split na 2-3-4 drzewach drzepce adresowanie otwarte w haszowaniu z analizą 2 B-drzewa definicja każdy węzeł ma następujące
Algorytmy i Struktury Danych
Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych
Teoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 6a Model danych oparty na drzewach 1 Model danych oparty na drzewach Istnieje wiele sytuacji w których przetwarzane informacje mają strukturę hierarchiczną lub zagnieżdżoną,
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz
Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Arytmetyka wskaźników, konwersja (rzutowanie) wskaźników Ćwiczenia z dostępu
Bazy danych. Andrzej Łachwa, UJ, /15
Bazy danych Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 15/15 PYTANIA NA EGZAMIN LICENCJACKI 84. B drzewa definicja, algorytm wyszukiwania w B drzewie. Zob. Elmasri:
Wstęp do programowania
Wieczorowe Studia Licencjackie Wrocław, 9.01.2007 Wstęp do programowania Wykład nr 13 Listy usuwanie elementów Poniżej prezentujemy funkcję, która usuwa element o podanej wartości pola wiek z nieuporządkowanej
Drzewa poszukiwań binarnych
1 Drzewa poszukiwań binarnych Kacper Pawłowski Streszczenie W tej pracy przedstawię zagadnienia związane z drzewami poszukiwań binarnych. Przytoczę poszczególne operacje na tej strukturze danych oraz ich
Lista liniowa dwukierunkowa
53 Lista liniowa dwukierunkowa Jest to lista złożona z elementów, z których każdy posiada, oprócz wskaźnika na element następny, również wskaźnik na element poprzedni. Zdefiniujmy element listy dwukierunkowej
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.
Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy
WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński
WYKŁAD 9 Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c Tomasz Zieliński /* Przyklad 4.1 - SORTOWANIE TABLIC - metoda najprostsza */ #include #define ROZMIAR 11 void
Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
. Podstawy Programowania 2. Drzewa bst - część pierwsza. Arkadiusz Chrobot. 22 maja 2016
.. Podstawy Programowania 2 Drzewa bst - część pierwsza Arkadiusz Chrobot Zakład Informatyki 22 maja 2016 1 / 55 Plan.1 Wstęp.2 Definicje.3 Implementacja Typ bazowy i wskaźnik na korzeń Dodawanie elementu
BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza
BAZY DANYCH Microsoft Access OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki
Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1
Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy
Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel
Wstęp do programowania Drzewa Piotr Chrząstowski-Wachtel Drzewa Drzewa definiują matematycy, jako spójne nieskierowane grafy bez cykli. Równoważne określenia: Spójne grafy o n wierzchołkach i n-1 krawędziach
Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane
Algorytmy i struktury danych Wykład 4 Tablice nieporządkowane i uporządkowane Tablice uporządkowane Szukanie binarne Szukanie interpolacyjne Tablice uporządkowane Szukanie binarne O(log N) Szukanie interpolacyjne
Drzewa AVL definicje
Drzewa AVL definicje Uporzadkowane drzewo binarne jest drzewem AVL 1, jeśli dla każdego wez la różnica wysokości dwóch jego poddrzew wynosi co najwyżej 1. M D S C H F K Z typowe drzewo AVL minimalne drzewa
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor
tablica: dane_liczbowe
TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica
Teoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 6b: Model danych oparty na drzewach http://hibiscus.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Model danych oparty na drzewach
Algorytmy i Struktury Danych
Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 8 1 /
INSTRUKCJE REPETYCYJNE PĘTLE
INSTRUKCJE REPETYCYJNE PĘTLE Pętla while( ) while ( wyrażenie ) instrukcja; while ( wyrażenie ) instrukcja_1; instrukcja_2;... instrukcja_n; Pętla wykonywana jest tak długo jak wartość wyrażenie jest różna
struct Student { char nazwisko[30]; int wiek; float ocena; }; #define MAX_ROZMIAR 3 Student lista_studentow[max_rozmiar];
PRZYKLAD p_30.cpp Przykladowa implementacja "listy studentów" z porzadkowaniem wedlug róznych kryteriów zaimplementowanym poprzez "fizyczne" sortowanie danych oraz poprzez sortowanie "logiczne" za pomoca
WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński
WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================
Abstrakcyjne struktury danych w praktyce
Abstrakcyjne struktury danych w praktyce Wykład 13 7.4 notacja polska A.Szepietowski Matematyka dyskretna rozdział.8 stos kompilacja rozłączna szablony funkcji Przypomnienie Drzewo binarne wyrażenia arytmetycznego
Listy, kolejki, stosy
Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:
Struktury danych: stos, kolejka, lista, drzewo
Struktury danych: stos, kolejka, lista, drzewo Wykład: dane w strukturze, funkcje i rodzaje struktur, LIFO, last in first out, kolejka FIFO, first in first out, push, pop, size, empty, głowa, ogon, implementacja
Programowanie Proceduralne
Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami
Algorytm selekcji Hoare a. Łukasz Miemus
Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego
Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak
Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.
Wstęp do programowania 1
Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short
Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.
Plan wykładu 2 BAZY DANYCH Wykład 4: Indeksy. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów struktury statyczne struktury dynamiczne Małgorzata Krętowska Wydział Informatyki PB Pojęcie
Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.
Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy
Wstęp. #define include include include include include include
1 FW WSTĘP 1 1. Wstęp. Przedstawiany tu program po wczytaniu tekstu ze standardowego wejścia wypisuje uporządkowaną alfabetycznie listę słów wraz z liczbą ich wystąpień w podanym tekście. Przez słowo rozumiemy
Drzewa podstawowe poj
Drzewa podstawowe poj ecia drzewo graf reprezentujacy regularna strukture wskaźnikowa, gdzie każdy element zawiera dwa lub wiecej wskaźników (ponumerowanych) do takich samych elementów; wez ly (albo wierzcho
dr inż. Paweł Myszkowski Wykład nr 11 ( )
dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 11 (11.05.2016) Plan prezentacji:
Algorytmy i struktury danych
Algorytmy i struktury danych Zaawansowane algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Sortowanie za pomocą malejących przyrostów metoda Shella Metoda jest rozwinięciem metody sortowania
Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach
Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach 27 kwietnia 2012 Wiedząc, że deklarowanie typu rekordowego w języku C/ C++ wygląda następująco: struct element
Ogólne wiadomości o drzewach
Ogólne wiadomości o drzewach Algorytmy i struktury danych Wykład 4. Rok akademicki: 2010/2011 Drzewo jako struktura danych Drzewo kolekcja elementów pozostających w zależności hierarchicznej, posiadająca
INFORMATYKA. Podstawy programowania w języku C. (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra
INFORMATYKA Podstawy programowania w języku C (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra INFORMATYKA Temat: Struktury dynamiczne Wykład 7 Struktury dynamiczne lista jednokierunkowa,