Dynamiczny przydział pamięci (język C) Dynamiczne struktury danych. Sortowanie. Klasyfikacja algorytmów sortowania. Algorytmy sortowania
|
|
- Jan Leśniak
- 7 lat temu
- Przeglądów:
Transkrypt
1 Rok akademicki 2010/2011, Wykład nr 4 2/50 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 4 ( ) dr inż. Jarosław Forenc Dynamiczny przydział pamięci język C: funkcje calloc(), malloc() i free() język C++: operatory new i delete Dynamiczne struktury danych stos, kolejka, lista, drzewo Sortowanie Klasyfikacja algorytmów sortowania Algorytmy sortowania sortowanie przez proste wstawianie sortowanie przez proste wybieranie sortowanie bąbelkowe Rok akademicki 2010/2011, Wykład nr 4 3/50 Rok akademicki 2010/2011, Wykład nr 4 4/50 Dynamiczny przydział pamięci (język C) Dynamiczny przydział pamięci na tablicę dwuwymiarową (macierz): przydział pamięci na tablicę zawierającą N-wierszy i M-kolumn int tab[n][m]; Dynamiczny przydział pamięci (język C) Dynamiczny przydział pamięci na tablicę dwuwymiarową (macierz): zamiast standardowego odwołania do elementów macierzy: tab[i][j] stosujemy odwołania do odpowiednich elementów wektora: *(tab+i*m+j) lub tab[i*m+j] Metoda 1 (wektor N M-elementowy): przydzielamy pamięć na wektor N M-elementowy: int *tab; tab = (int*) calloc(n*m,sizeof(int)); /*... */ free(tab); po wykorzystaniu wektora, przydzieloną pamięć zwalniamy funkcją free() tab M Przykład: tablica tab, dla której N=3, M=4 [0][0] [0][1] [0][2] [0][3] [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3] Mi odwołujemy się do elementu tab[2][2]: *(tab+2*4+2) j
2 Rok akademicki 2010/2011, Wykład nr 4 5/50 Rok akademicki 2010/2011, Wykład nr 4 6/50 Przykład nr 1 - Dynamiczny przydział pamięci (1/2) Przykład nr 1 - Dynamiczny przydział pamięci (2/2) #include <stdio.h> #include <stdlib.h> #include <time.h> int main() int i, j, n, m, *tab; printf("podaj liczbe wierszy: "); scanf("%d",&n); printf("podaj liczbe kolumn: "); scanf("%d",&m); for (i=0; i<n; i++) for (j=0; j<m; j++) printf("%4d",tab[m*i+j]); printf("\n"); free(tab); return 0; Podaj liczbe wierszy: 4 Podaj liczbe kolumn: tab = (int *) calloc(n*m,sizeof(int)); srand(time(null)); for (i=0; i<n; i++) for (j=0; j<m; j++) *(tab+m*i+j) = rand()%100; Rok akademicki 2010/2011, Wykład nr 4 7/50 Rok akademicki 2010/2011, Wykład nr 4 8/50 Dynamiczny przydział pamięci (język C) Metoda 2 (wskaźnik na tablicę wskaźników): przydzielamy pamięć na N-elementowy wektor wskaźników do typu int do kolejnych elementów tego wektora zapisujemy adresy M-elementowych wektorów liczb typu int (pamięć na wektory jest także przydzielana dynamicznie) Dynamiczny przydział pamięci (język C) Metoda 3 (wektor N M-elementowy + wektor wskaźników): przydzielamy pamięć na N-elementowy wektor wskaźników do typu int przydzielamy pamięć na N M-elementowy wektor elementów typu int, jego adres zapisujemy pod zerowym elementem wektora N-elementowego do pozostałych elementów wektora N-elementowego zapisujemy adresy pierwszych elementów kolejnych wierszy macierzy znajdujących się w wektorze N M-elementowym tab N odwołania do elementów takiej tablicy mają taką samą postać jak w przypadku zwykłych tablic: tab[i][j] M M... M
3 Rok akademicki 2010/2011, Wykład nr 4 9/50 Rok akademicki 2010/2011, Wykład nr 4 10/50 Dynamiczny przydział pamięci (język C++) Dynamiczny przydział pamięci (język C++) do dynamicznego przydziału pamięci w języku C++ stosowany jest operator new pamięć przydzielona operatorem new istnieje do zakończenia programu lub do chwili zwolnienia tej pamięci za pomocą operatora delete new typ delete ptr; operator ten alokuje obszar pamięci niezbędny dla przechowywania obiektu typu typ i zwraca wskaźnik na początek tego obszaru gdzie ptr jest wskaźnikiem wskazującym na obiekt stworzony przez new int *ptr; ptr = new int; przydział pamięci na tablicę n elementów typu typ: new typ[n] jeśli alokacja pamięci nie jest możliwa, to zwracana jest wartość NULL typ wskaźnika jest odpowiednio dopasowany do typu obiektu, więc nie są konieczne żadne konwersje wskaźnikowe wartością powyższego wyrażenia jest wskaźnik na typ (a nie na tablicę elementów typu typ) jako rozmiar tablicy n można podać dowolne wyrażenie Rok akademicki 2010/2011, Wykład nr 4 11/50 Rok akademicki 2010/2011, Wykład nr 4 12/50 Dynamiczny przydział pamięci (język C++) Przykład nr 2 - operatory new i delete (1/2) przydział pamięci na tablicę n-elementową typu int: int *ptr; ptr = new int[n]; usuwając tablicę, trzeba podać, że chodzi o tablicę, a nie o pojedynczy element: delete [] ptr; gdzie ptr jest wskaźnikiem zwróconym przez operator new podczas tworzenia dynamicznej tablicy niestety nie można w ten sposób tworzyć dynamicznych tablic wielowymiarowych #include <stdio.h> #include <stdlib.h> int main() int *tab, i, n; float suma = 0.0; printf("podaj ilosc liczb: "); scanf("%d",&n); tab = new int[n]; if (tab == NULL) printf("nie mozna przydzielic pamieci.\n"); exit(-1);
4 Rok akademicki 2010/2011, Wykład nr 4 13/50 Rok akademicki 2010/2011, Wykład nr 4 14/50 Przykład nr 2 - operatory new i delete (1/2) Przykład nr 2 - operatory new i delete (1/2) for (i=0; i<n; i++) /* wczytanie liczb */ printf("podaj liczbe nr %d: ",i+1); scanf("%d",&tab[i]); for (i=0; i<n; i++) suma = suma + tab[i]; Podaj ilosc liczb: 5 for (i=0; i<n; i++) /* wczytanie Podaj liczb liczbe */ nr 1: 1 Podaj liczbe nr 2: 2 printf("podaj liczbe nr %d: ",i+1); Podaj liczbe nr 3: 3 scanf("%d",&tab[i]); Podaj liczbe nr 4: 4 Podaj liczbe nr 5: 5 for (i=0; i<n; i++) Srednia 5 liczb wynosi suma = suma + tab[i]; printf("srednia %d liczb wynosi %f\n",n,suma/n); printf("srednia %d liczb wynosi %f\n",n,suma/n); delete [] tab; return 0; delete [] tab; return 0; Rok akademicki 2010/2011, Wykład nr 4 15/50 Rok akademicki 2010/2011, Wykład nr 4 16/50 Dynamiczne struktury danych Stos Dynamiczne struktury danych - struktury danych, którym pamięć jest przydzielana i zwalniana w trakcie wykonywania programu Podstawowe dynamicznych struktur danych: stos, kolejka lista (jednokierunkowa, dwukierunkowa, cykliczna: jedno- i dwukierunkowa) drzewo Elementy umieszczane w dynamicznych strukturach danych są najczęściej strukturami składającymi się z użytecznych danych (data) oraz z jednego lub kilku wskaźników (next) zawierających adresy innych elementów struct element typ data; struct element *next; ; data next stos (ang. stack) - struktur składająca się z elementów, z których każdy posiada tylko adres następnika dostęp do danych przechowywanych na stosie jest możliwy tylko w miejscu określanym mianem wierzchołka stosu (ang. top) wierzchołek stosu jest jedynym miejscem, do którego można dołączać lub z którego można usuwać elementy każdy składnik stosu posiada wyróżniony element (next) zawierający adres następnego elementu wskaźnik ostatniego elementu stosu wskazuje na adres pusty (NULL) podstawowe operacje na stosie to: dodanie elementu do stosu - funkcja push() zdjęcie elementu ze stosu - funkcja pop() tutaj dodajemy i usuwamy elementy data next data next data next NULL top wierzchołek
5 Rok akademicki 2010/2011, Wykład nr 4 17/50 Rok akademicki 2010/2011, Wykład nr 4 18/50 Zastosowania stosu - notacja polska Zastosowania stosu - odwrotna notacja polska notacja polska (zapis przedrostkowy, Notacja Łukasiewicza) jest to sposób zapisu wyrażeń arytmetycznych, podający najpierw operator, a następnie argumenty odwrotna notacja polska - ONP (ang. Reverse Polish Notation, RPN) jest sposobem zapisu wyrażeń arytmetycznych, w którym operator umieszczany jest po argumentach wyrażenie arytmetyczne: wyrażenie arytmetyczne: 4 / (1 + 3) (1 + 3) / 2 ma w notacji polskiej postać: ma w odwrotnej notacji polskiej postać: / / wyrażenie w notacji polskiej nie wymaga nawiasów, ponieważ przypisanie argumentów do operatorów wynika wprost z ich kolejności w zapisie odwrotna notacja polska została opracowana przez australijskiego naukowca Charlesa Hamblina notacja polska była podstawą opracowania tzw. odwrotnej notacji polskiej Rok akademicki 2010/2011, Wykład nr 4 19/50 Rok akademicki 2010/2011, Wykład nr 4 20/50 Zastosowania stosu - odwrotna notacja polska obliczenie wartości wyrażenia przy zastosowaniu ONP wymaga: zamiany notacji konwencjonalnej (nawiasowej) na ONP obliczenia wartości wyrażenia arytmetycznego zapisanego w ONP oba powyższe algorytmy wykorzystują stos Zamiana wyrażenia z notacji konwencjonalnej na ONP: zamiana wykonywana jest przy zastosowaniu algorytmu Dijkstry nazywanego stacją rozrządową czytając wyrażenie arytmetyczne od strony lewej do strony prawej operatory odkładamy na stos a liczby na wyjście Zastosowania stosu - odwrotna notacja polska Reguły zamiany wyrażenia z notacji konwencjonalnej na ONP: operator odkładamy na stos tylko wtedy, jeśli ostatnim elementem stosu jest operator o niższym priorytecie jeżeli ma on wyższy lub równy priorytet to zdejmujemy ze stosu dotąd elementy i wysyłamy na wyjście, aż ostatni operator będzie miał niższy priorytet lub stos będzie pusty jeśli kolejnym elementem jest nawias otwierający (, to odkładamy go na stos, bez względu na to co znajduje się w danym momencie na stosie i bez względu na to czy stos jest pusty powyższy nawias traktujemy jak dno stosu i odczytujemy kolejne elementy wyrażenia według standardowego algorytmu jeśli dojdziemy do nawiasu zamykającego ), to zdejmujemy kolejne operatory ze stosu i wysyłamy na wyjście, aż dojdziemy do nawiasu otwierającego, który również zdejmujemy ze stosu jeśli dojdziemy do końca wyrażenia arytmetycznego, to zdejmujemy ze stosu pozostałe operatory i wysyłamy je na wyjście
6 Rok akademicki 2010/2011, Wykład nr 4 21/50 Rok akademicki 2010/2011, Wykład nr 4 22/50 Odwrotna notacja polska - przykład wyrażenie w notacji konwencjonalnej: (2+1)*3-4*(7+4) = -35 Krok Wejście Stos Wyjście 1 ( ( NULL 2 2 ( NULL ( NULL ( NULL 1 5 ) NULL + 6 * * NULL 7 3 * NULL NULL * NULL 4 10 * * - NULL 11 ( ( * - NULL 12 7 ( * - NULL ( * - NULL ( * - NULL 4 15 ) * - NULL + 16 Koniec - NULL * 17 NULL - wyrażenie w ONP: * * - Zastosowania stosu - odwrotna notacja polska Operacje wykonywane przy obliczaniu wartości wyrażenia w ONP: pobieramy kolejny element wyrażenia jeśli elementem jest liczba to odkładamy ją na stos jeśli elementem jest operator, to pobieramy ze stosu tyle liczb, aby można było zastosować operator na tych liczbach, np. dla dodawania, odejmowania, mnożenia i dzielenia są to dwie kolejne liczby wykonujemy operację na liczbach i jej wynik odkładamy na stos jeśli dotrzemy do końca wyrażenia, to pobieramy wynik ze stosu, który jest wartością wyrażenia arytmetycznego Uwaga: jeśli nie ma jeszcze końca, to wracamy na początek algorytmu jeśli np. stos ma postać: 2 4 NULL i mamy wykonać operację dzielenia /, to operacja ta ma postać: 4 / 2, czyli do wykonania operacji argumenty brane są w odwrotnej kolejności Rok akademicki 2010/2011, Wykład nr 4 23/50 Rok akademicki 2010/2011, Wykład nr 4 24/50 Odwrotna notacja polska - przykład Kolejka równanie w ONP: * * - wynik: -35 Krok Wejście Stos Działanie NULL NULL NULL NULL 5 * 9 NULL 3 * NULL NULL NULL NULL * 44 9 NULL 4 * NULL Koniec NULL wynik: -35 kolejka (ang. queue) - składa się z liniowo uporządkowanych elementów elementy dołączane są tylko na końcu kolejki (wkaźnik tail) elementy usuwane są tylko z początku kolejki (wskaźnik head) powiązanie między elementami kolejki jest takie samo, jak w stosie kolejka nazywana jest stosem FIFO (ang. First In First Out)
7 Rok akademicki 2010/2011, Wykład nr 4 25/50 Rok akademicki 2010/2011, Wykład nr 4 26/50 Lista jednokierunkowa Lista dwukierunkowa organizacja listy jednokierunkowej podobna jest do organizacji stosu i kolejki w liście dwukierunkowej każdy węzeł posiada adres następnika, jak i poprzednika dla każdego składnika (poza ostatnim) jest określony następny składnik (lub poprzedni - zależnie od implementacji) w strukturze tego typu wygodne jest przechodzenie pomiędzy elementami w obu kierunkach (od początku do końca i odwrotnie) zapamiętywany jest wskaźnik tylko na pierwszy element listy (first) lub wskaźniki na pierwszy (first) i ostatni element listy (last) elementy listy można dołączać/usuwać w dowolnym miejscu listy Rok akademicki 2010/2011, Wykład nr 4 27/50 Rok akademicki 2010/2011, Wykład nr 4 28/50 Lista cykliczna Drzewo lista cykliczna powstaje z listy jednokierunkowej lub dwukierunkowej, poprzez połączenie ostatniego element z pierwszym Jednokierunkowa: Dwukierunkowa: drzewo - najbardziej ogólna dynamiczna struktura danych, może być reprezentowane graficznie na różne sposoby na górze znajduje się korzeń drzewa (a) skojarzone z korzeniem poddrzewa połączone są z korzeniem liniami zwanymi gałęziami drzewa potomkiem węzła w nazywamy każdy, różny od w, węzeł należący do drzewa, w którym w jest korzeniem węzeł, który nie ma potomków, to liść drzewa
8 Rok akademicki 2010/2011, Wykład nr 4 29/50 Rok akademicki 2010/2011, Wykład nr 4 30/50 Drzewo binarne Binarne drzewo wyszukiwawcze drzewo binarne jest szczególnym przypadkiem ogólnej struktury zwanej drzewem każdy wierzchołek drzewa ma co najwyżej dwóch potomków jest to drzewo binarne, w którym dla każdego węzła w i : wszystkie klucze w lewym poddrzewie węzła w i są mniejsze od klucza w węźle w i wszystkie klucze w prawym poddrzewie węzła w i są większe od klucza w węźle w i największą zaletą takiej struktury jest szybkość wyszukiwania informacji Rok akademicki 2010/2011, Wykład nr 4 31/50 Rok akademicki 2010/2011, Wykład nr 4 32/50 Sortowanie Sortowanie sortowanie polega na uporządkowaniu zbioru danych względem pewnych cech charakterystycznych każdego elementu tego zbioru najczęstszym przypadkiem jest sortowanie względem wartości każdego elementu, np. sortowanie liczb, sortowanie słów w przypadku liczb, sortowanie polega na znalezieniu kolejności liczb zgodnej z relacją lub w przypadku słów (nazw) sortowanie polega na ustawieniu ich w porządku słownikowym (lub alfabetycznym) zwanym także leksykograficznym Przykład: tablica nieposortowana: Przykład: tablica nieposortowana: tablice posortowane: tablica posortowana zgodnie z relacją (od najmniejszej do największej liczby): tablica posortowana zgodnie z relacją (od największej do najmniejszej liczby): porównanie nazw może być sprowadzone do porównywania ich liczbowych kodów
9 Rok akademicki 2010/2011, Wykład nr 4 33/50 Rok akademicki 2010/2011, Wykład nr 4 34/50 Sortowanie w praktyce sortowanie sprowadza się do porządkowanie danych na podstawie porównania - element stosowany w porównaniu to klucz Przykład: tablica nieposortowana (imię, nazwisko, wiek): Sortowanie Po co stosować sortowanie? posortowane elementy można szybciej zlokalizować posortowane elementy można przedstawić w czytelniejszy sposób kolejność alfabetyczna nazwisk przedstawienie cen produktów od najniższej do najwyższej tablica posortowana (klucz - nazwisko): tablica posortowana (klucz - wiek): Klasyfikacje algorytmów sortowania złożoność obliczeniowa algorytmu - zależność liczby wykonywanych operacji w stosunku do liczebności sortowanego zbioru n oceniając wydajność algorytmu często analizuje się przypadki: najgorszy (złożoność pesymistyczna) najlepszy średni (złożoność średnia) Rok akademicki 2010/2011, Wykład nr 4 35/50 Rok akademicki 2010/2011, Wykład nr 4 36/50 Notacja O notacja O stosowana jest do porównywania wydajności algorytmów, wyraża złożoność matematyczną algorytmu w notacji tej po literze O występuje wyrażenie w nawiasach zawierające literę n oznaczającą liczbę elementów, na której działa algorytm do wyznaczenia złożoności obliczeniowej algorytmu przyjmuje się liczbę wykonywanych w nim elementarnych operacji, np. porównywanie Przykład: Notacja O porównanie najczęściej występujących złożoności: Elementy O(log n) O(n) O(n log n) O(n 2 ) O(2 n ) , , , O(n) O(n 2 ) - złożoność algorytmu jest prostą funkcją liczby elementów - (jeśli sortowanie 1000 elementów zajmuje 1 s, to sortowanie - (2000 elementów zajmie 2 s) - czas konieczny do wykonania algorytmu rośnie wraz z kwadratem liczby elementów O(log n) - złożoność logarytmiczna O(n) - złożoność liniowa O(n log n) - złożoność liniowo-logarytmiczna O(n 2 ) - złożoność kwadratowa O(2 n ) - złożoność wykładnicza
10 Rok akademicki 2010/2011, Wykład nr 4 37/50 Rok akademicki 2010/2011, Wykład nr 4 38/50 Klasyfikacje algorytmów sortowania Złożoność pamięciowa: Klasyfikacje algorytmów sortowania Stabilność algorytmu: jest to wielkość zasobów zajmowanych przez algorytm w algorytmach wykorzystujących technikę sortowania w miejscu wielkość zbioru danych podczas sortowania nie zmienia się (lub jest tylko nieco większa) algorytmy nie wykorzystujące techniki sortowania w miejscu wymagają podczas sortowania znaczniej więcej miejsca w pamięci komputera do przechowywania danych Sortowanie zewnętrzne i wewnętrzne: algorytm jest nazywany stabilnym, jeśli podczas sortowania zachowuje kolejność występowania elementów o tym samym kluczu, np. tablica nieposortowana (imię, nazwisko, wiek): tablica posortowana algorytmem stabilnym (klucz - wiek): sortowanie zewnętrzne - jest stosowane, gdy nie jest możliwe jednoczesne umieszczenie wszystkich elementów zbioru sortowanego w pamięci komputera (np. sortowanie plików) tablica posortowana algorytmem niestabilnym (klucz - wiek): sortowanie wewnętrzne - odbywa się w pamięci komputera Rok akademicki 2010/2011, Wykład nr 4 39/50 Rok akademicki 2010/2011, Wykład nr 4 40/50 Sortowanie przez proste wstawianie Sortowanie przez proste wstawianie sortowanie przez proste wstawianie (ang. insertion sort) - polega na pobieraniu kolejnego elementu z danych wejściowych i wstawianiu go na odpowiednie miejsce w wynikach Algorytm metody: elementy są umownie podzielone na ciąg wynikowy: a 1,a 2,,a i-1 i ciąg źródłowy: a i,a i+1,,a n w i-tym kroku pobieramy element z ciągu źródłowego a i porównujemy ten element z kolejnymi elementami z ciągu wynikowego: a i-1,a i-2, porównywanie kończymy, gdy porównywany element jest mniejszy lub równy elementowi a i lub dojdziemy do początku ciągu wynikowego wstawiamy element a i w odpowiednim miejscu ciągu wynikowego Przykład: Funkcja w języku C: void InsertionSort(int tab[]) int i,j,tmp; for (i=1; i<n; i++) j=i; tmp=tab[i]; while (tab[j-1]>tmp && j>0) tab[j]=tab[j-1]; j--; tab[j]=tmp;
11 Rok akademicki 2010/2011, Wykład nr 4 41/50 Rok akademicki 2010/2011, Wykład nr 4 42/50 Sortowanie przez proste wstawianie Uwagi: złożoność algorytmu: O(n 2 ) w najgorszym przypadku każdy element powoduje jednokrotne przestawienie wszystkich poprzedzających go elementów, a wtedy liczba porównań wynosi: n (n-1) liczba porównań zależna jest od początkowego rozmieszczenia elementów w tablicy + wydajny dla danych wstępnie posortowanych + wydajny dla zbiorów o niewielkiej liczebności + małe zasoby zajmowane podczas pracy (sortowanie w miejscu) + stabilny - zachowuje oryginalną kolejność takich samych elementów + prosty w implementacji Sortowanie przez proste wybieranie sortowanie przez proste wybieranie (ang. selection sort) - polega na wyszukaniu elementu, który ma się znaleźć na zadanej pozycji i na zamianie miejscami z tym elementem, który jest tam obecnie Algorytm metody: zaczynając od elementu pierwszego, szukamy w tablicy elementu o najmniejszej wartości i zamieniamy go miejscami z pierwszym elementem następnie szukamy elementu najmniejszego zaczynając od drugiego elementu i zamieniamy go z drugim elementem powtarzamy powyższe operacje do momentu, aż w tablicy pozostanie tylko jeden element mała efektywność dla normalnej i dużej ilości danych Rok akademicki 2010/2011, Wykład nr 4 43/50 Rok akademicki 2010/2011, Wykład nr 4 44/50 Sortowanie przez proste wybieranie Przykład: Funkcja w języku C: void SelectionSort(int tab[]) int i,j,k,tmp; for (i=0;i<n-1;i++) k=i; for (j=i+1; j<n; j++) if (tab[k]>=tab[j]) k = j; tmp = tab[i]; tab[i] = tab[k]; tab[k] = tmp; Sortowanie przez proste wybieranie Uwagi: złożoność algorytmu: O(n 2 ) + szybki w sortowaniu niewielkich tablic + małe zasoby zajmowane podczas pracy (sortowanie w miejscu) + prosty w implementacji liczba porównań elementów jest niezależna od początkowego rozmieszczenia elementów w tablicy (takie zachowanie algorytmu nazywane jest neutralnym lub niewrażliwym) w algorytmie może zdarzyć się, że wykonywana jest zamiana tego samego elementu ze sobą (sytuacja taka występuje, gdy najmniejszy element jest na pierwszej pozycji)
12 Rok akademicki 2010/2011, Wykład nr 4 45/50 Rok akademicki 2010/2011, Wykład nr 4 46/50 Sortowanie bąbelkowe Sortowanie bąbelkowe sortowanie bąbelkowe (ang. bubble sort), nazywane jest także: sortowaniem pęcherzykowym sortowaniem przez prostą zamianę (ang. straight exchange) metoda ta polega na porównywaniu dwóch kolejnych elementów i zamianie ich kolejności jeśli jest to konieczne nazwa metody wzięła się stąd, że kolejne porównania powodują wypychanie kolejnego największego elementu na koniec ( wypłynięcie największego bąbelka ) Algorytm metody: porównujemy pierwszy i drugi element tabeli i jeśli trzeba to zamieniamy je miejscami, następnie porównujemy drugi i trzeci element i jeśli jest to konieczne, to zamieniamy je miejscami, itd. powyższe operacje wykonujemy, aż dojdziemy do końca tabeli następnie ponownie rozpoczynamy porównywanie elementów od początku tabeli (element pierwszy z drugim, drugi z trzecim, itd. aż dojdziemy do końca tabeli) sortowanie kończymy, gdy podczas kolejnego przejścia przez całą tabelę nie wykonana zostanie żadna zamiana elementów Rok akademicki 2010/2011, Wykład nr 4 47/50 Rok akademicki 2010/2011, Wykład nr 4 48/50 Sortowanie bąbelkowe - przykład Sortowanie bąbelkowe Funkcja w języku C: void BubbleSort(int tab[]) int i,j,tmp,koniec; do koniec=0; for (i=0;i<n-1;i++) if (tab[i]>tab[i+1]) tmp=tab[i]; tab[i]=tab[i+1]; tab[i+1]=tmp; koniec=1; while (koniec);
13 Rok akademicki 2010/2011, Wykład nr 4 49/50 Rok akademicki 2010/2011, Wykład nr 4 50/50 Sortowanie bąbelkowe Koniec wykładu nr 4 Uwagi: złożoność algorytmu: O(n 2 ) + prosta realizacja + wysoka efektywność użycia pamięci (sortowanie w miejscu) + stabilny algorytm - zachowuje oryginalną kolejność takich samych elementów Dziękuję za uwagę! mała efektywność
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
Bardziej szczegółowoPodstawy informatyki 2. Podstawy informatyki 2. Wykład nr 2 ( ) Plan wykładu nr 2. Politechnika Białostocka. - Wydział Elektryczny
Wykład nr 2 2/6 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne Rok akademicki 2006/2007 Plan wykładu nr 2 Argumenty funkcji main Dynamiczne struktury danych
Bardziej szczegółowoPodstawy informatyki 2
Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne Rok akademicki 2006/2007 Wykład nr 2 (07.03.2007) Wykład nr 2 2/46 Plan wykładu nr 2 Argumenty funkcji main
Bardziej szczegółowoInformatyka 2. Wykład nr 5 ( ) Plan wykładu nr 5. Politechnika Białostocka. - Wydział Elektryczny. Odwrotna notacja polska.
Rok akademicki 008/009, Wykład nr 5 /6 Plan wykładu nr 5 Informatyka Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia (zaoczne) Rok akademicki
Bardziej szczegółowoInformatyka 2. Wykład nr 5 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia (zaoczne) Rok akademicki 2008/2009 Wykład nr 5 (22.11.2008) Rok akademicki 2008/2009,
Bardziej szczegółowoDefinicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )
SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,
Bardziej szczegółowodr 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:
Bardziej szczegółowoAlgorytmy 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
Bardziej szczegółowoPodstawy Informatyki. Wykład 6. Struktury danych
Podstawy Informatyki Wykład 6 Struktury danych Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą
Bardziej szczegółowoSpis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu
Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)
Bardziej szczegółowoAlgorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)
Algorytmy i struktury danych Wykład 3: Stosy, kolejki i listy Dr inż. Paweł Kasprowski pawel@kasprowski.pl Kolejki FIFO First In First Out (kolejka) LIFO Last In First Out (stos) Stos (stack) Dostęp jedynie
Bardziej szczegółowoStruktury 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
Bardziej szczegółowoNotacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.
1 wyliczanie i transformacja wyrażeń (wersja skrócona) Opis został przygotowany przez: Bogdana Kreczmera 28 kwietnia 2002 Strona 1 z 68 Zakład Podstaw Cybernetyki i Robotyki - trochę historii...............
Bardziej szczegółowoint tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania
Rok akademicki 2013/2014, Pracownia nr 10 2/20 Informatyka 1 Tablica elementów ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu Politechnika Białostocka - Wydział Elektryczny Elektrotechnika,
Bardziej szczegółowoSpis treści JĘZYK C - WSKAŹNIKI, DYNAMICZNY PRZYDZIAŁ PAMIĘCI. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu
Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1D300 017 (studia stacjonarne)
Bardziej szczegółowoWstę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
Bardziej szczegółowoINFORMATYKA SORTOWANIE DANYCH.
INFORMATYKA SORTOWANIE DANYCH http://www.infoceram.agh.edu.pl SORTOWANIE Jest to proces ustawiania zbioru obiektów w określonym porządku. Sortowanie stosowane jest w celu ułatwienia późniejszego wyszukania
Bardziej szczegółowoLaboratorium nr 7 Sortowanie
Laboratorium nr 7 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) Materiały Wyróżniamy następujące metody sortowania: 1. Przez prostą zamianę
Bardziej szczegółowoPodstawy informatyki. Wykład nr 1 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc
Podstawy informatyki Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne Rok akademicki 2006/2007 Wykład nr 1 (09.03.2007) Wykład nr 1 2/34 Dane podstawowe
Bardziej szczegółowoLab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Bardziej szczegółowoDynamiczne struktury danych
Dynamiczne struktury danych 391 Dynamiczne struktury danych Przez dynamiczne struktury danych rozumiemy proste i złożone struktury danych, którym pamięć jest przydzielana i zwalniana na żądanie w trakcie
Bardziej szczegółowoWykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy
Wykład 3 Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Dynamiczne struktury danych Lista jest to liniowo uporządkowany zbiór elementów, z których dowolny element
Bardziej szczegółowoTemat: 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,
Bardziej szczegółowoPodstawowe algorytmy i ich implementacje w C. Wykład 9
Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny
Bardziej szczegółowo// 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
Bardziej szczegółowoWYKŁ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
Bardziej szczegółowoWskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17
Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8
Bardziej szczegółowoPodstawy 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
Bardziej szczegółowoif (warunek) instrukcja1; if (warunek) instrukcja1; else instrukcja2; a > b - a większe od b if (warunek) instrukcja1; a <= b - a mniejsze lub równe b
Rok akademicki 2012/2013, Pracownia nr 4 2/17 Informatyka 1 Instrukcja warunkowa if prawda instrukcja1 warunek fałsz Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne
Bardziej szczegółowoAlgorytmy 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
Bardziej szczegółowoCo to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
Bardziej szczegółowoZadanie 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
Bardziej szczegółowoSortowanie. 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
Bardziej szczegółowoWykł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
Bardziej szczegółowoDrzewa 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
Bardziej szczegółowoSortowanie 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
Bardziej szczegółowoDrzewa 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.
Bardziej szczegółowoZakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska
1 Przykład wyliczania wyrażeń arytmetycznych Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Copyright
Bardziej szczegółowoSpis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu
Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)
Bardziej szczegółowoWysokość 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ą.
Bardziej szczegółowoKolejka 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
Bardziej szczegółowoWykł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
Bardziej szczegółowodr inŝ. Jarosław Forenc
Rok akademicki 2009/2010, Wykład nr 8 2/19 Plan wykładu nr 8 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2009/2010
Bardziej szczegółowodr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 7 (24.01.2011) dr inż. Jarosław Forenc Rok akademicki
Bardziej szczegółowoWykład 5 Wybrane zagadnienia programowania w C++ (c.d.)
Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Kontenery - - wektor vector - - lista list - - kolejka queue - - stos stack Kontener asocjacyjny map 2016-01-08 Bazy danych-1 W5 1 Kontenery W programowaniu
Bardziej szczegółowoPodstawy informatyki 2. Podstawy informatyki 2. Wykład nr 1 ( ) Dane podstawowe. Politechnika Białostocka. - Wydział Elektryczny
Wykład nr 1 2/42 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne Rok akademicki 2006/2007 Wykład nr 1 (28.02.2007) Dane podstawowe dr inŝ. Jarosław aw Forenc
Bardziej szczegółowoALGORYTMY 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/
Bardziej szczegółowoZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
Bardziej szczegółowoListy, 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ć:
Bardziej szczegółowoAlgorytmy i struktury danych
Algorytmy i struktury danych Proste algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Pojęcie sortowania Sortowaniem nazywa się proces ustawiania zbioru obiektów w określonym porządku Sortowanie
Bardziej szczegółowodr inż. Jarosław Forenc
Informatyka Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 8/9 Wykład nr 4 (.3.9) Rok akademicki 8/9, Wykład nr 4 /33 Plan wykładu
Bardziej szczegółowoStruktury Danych i Złożoność Obliczeniowa
Struktury Danych i Złożoność Obliczeniowa Zajęcia 2 Algorytmy wyszukiwania, sortowania i selekcji Sortowanie bąbelkowe Jedna z prostszych metod sortowania, sortowanie w miejscu? Sortowanie bąbelkowe Pierwsze
Bardziej szczegółowoAlgorytmy 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
Bardziej szczegółowoAnaliza algorytmów zadania podstawowe
Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą
Bardziej szczegółowoProgramowanie i struktury danych
Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne
Bardziej szczegółowoZłożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to
Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to wprowadzili J. Hartmanis i R. Stearns. Najczęściej przez zasób rozumie się czas oraz pamięć dlatego
Bardziej szczegółowoAlgorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych
Algorytmy i Struktury Danych Wykład IV Sortowania cd. Elementarne struktury danych 1 Co dziś? Dolna granica sortowań Mediany i statystyki pozycyjne Warstwa implementacji Warstwa abstrakcji #tablice #listy
Bardziej szczegółowoPodstawowe struktury danych
Podstawowe struktury danych 1) Listy Lista to skończony ciąg elementów: q=[x 1, x 2,..., x n ]. Skrajne elementy x 1 i x n nazywamy końcami listy, a wielkość q = n długością (rozmiarem) listy. Szczególnym
Bardziej szczegółowoprowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325
PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj
Bardziej szczegółowooperacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.
Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie
Bardziej szczegółowoProgramowanie w VB Proste algorytmy sortowania
Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich
Bardziej szczegółowoDrzewo. 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ą.
Bardziej szczegółowodr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2009/2010 Wykład nr 8 (29.01.2009) dr inż. Jarosław Forenc Rok akademicki
Bardziej szczegółowoAlgorytmy i struktury danych
Algorytmy i struktury danych ĆWICZENIE 2 - WYBRANE ZŁOŻONE STRUKTURY DANYCH - (12.3.212) Prowadząca: dr hab. inż. Małgorzata Sterna Informatyka i3, poniedziałek godz. 11:45 Adam Matuszewski, nr 1655 Oliver
Bardziej szczegółowoWYKŁ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
Bardziej szczegółowoAlgorytmy 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ż
Bardziej szczegółowoINFORMATYKA. 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,
Bardziej szczegółowoWstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu
Bardziej szczegółowoTablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011
Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu
Bardziej szczegółowoZASADY 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
Bardziej szczegółowoPodstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane
Bardziej szczegółowoJęzyk C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
Bardziej szczegółowoWskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Bardziej szczegółowoStrategia "dziel i zwyciężaj"
Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania
Bardziej szczegółowoLABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem
Bardziej szczegółowoAlgorytm 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
Bardziej szczegółowoDrzewa 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
Bardziej szczegółowoWskaźniki. Informatyka
Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą
Bardziej szczegółowoPODSTAWY INFORMATYKI wykład 5.
PODSTAWY INFORMATYKI wykład 5. Adrian Horzyk Web: http://home.agh.edu.pl/~horzyk/ E-mail: horzyk@agh.edu.pl Google: Adrian Horzyk Gabinet: paw. D13 p. 325 Akademia Górniczo-Hutnicza w Krakowie WEAIiE,
Bardziej szczegółowoTeoretyczne 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ą,
Bardziej szczegółowoWybrane algorytmy tablicowe
Wybrane algorytmy tablicowe Algorytmy i struktury danych Wykład 2. Rok akademicki: 2009/2010 Sortowanie przez wybieranie for (int i = 0; i < liczby.length - 1; i++) k = i; for (int j = i; j < liczby.length;
Bardziej szczegółowoAlgorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych
Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2014/15 Znajdowanie maksimum w zbiorze
Bardziej szczegółowoDynamiczne struktury danych
Listy Zbiór dynamiczny Zbiór dynamiczny to zbiór wartości pochodzących z pewnego określonego uniwersum, którego zawartość zmienia się w trakcie działania programu. Elementy zbioru dynamicznego musimy co
Bardziej szczegółowoTablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119
Tablice Tablica to struktura danych, która może przechowywać wiele wartości tego samego typu. Na przykład tablica może zawierać: 10 wartości typu int opisujących liczbę studentów przyjętych na kierunek
Bardziej szczegółowoAlgorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych
Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2013/14 Znajdowanie maksimum w zbiorze
Bardziej szczegółowoDrzewa 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
Bardziej szczegółowoAlgorytmy sortujące i wyszukujące
Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.
Bardziej szczegółowoStruktury Danych i Złożoność Obliczeniowa
Struktury Danych i Złożoność Obliczeniowa Zajęcia 1 Podstawowe struktury danych Tablica Najprostsza metoda przechowywania serii danych, zalety: prostota, wady: musimy wiedzieć, ile elementów chcemy przechowywać
Bardziej szczegółowoAlgorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Liniowe struktury danych. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład
Bardziej szczegółowoDrzewa 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
Bardziej szczegółowoKURS C/C++ WYKŁAD 6. Wskaźniki
Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można
Bardziej szczegółowoInformatyka 2. Wykład nr 2 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2008/2009 Wykład nr 2 (22.10.2008) Rok akademicki 2008/2009, Wykład
Bardziej szczegółowoWykł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
Bardziej szczegółowoLista, Stos, Kolejka, Tablica Asocjacyjna
Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,
Bardziej szczegółowoAlgorytmy 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
Bardziej szczegółowoAlgorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Abstrakcyjne struktury danych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury
Bardziej szczegółowoPodstawy Informatyki. Sprawność algorytmów
Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych
Bardziej szczegółowoAbstrakcyjne struktury danych - stos, lista, drzewo
Sprawozdanie Podstawy Informatyki Laboratoria Abstrakcyjne struktury danych - stos, lista, drzewo Maciej Tarkowski maciek@akom.pl grupa VII 1/8 1. Stos Stos (ang. Stack) jest podstawową liniową strukturą
Bardziej szczegółowoWskaźniki. Programowanie Proceduralne 1
Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres
Bardziej szczegółowo