Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Algorytmy sortowania i przeszukiwania. Spis treści 1.Sortowanie przez wstawianie - InsertSort 2.Sortowanie przez wybór – SelectionSort 3.Algorytm sortowania.

Podobne prezentacje


Prezentacja na temat: "Algorytmy sortowania i przeszukiwania. Spis treści 1.Sortowanie przez wstawianie - InsertSort 2.Sortowanie przez wybór – SelectionSort 3.Algorytm sortowania."— Zapis prezentacji:

1 Algorytmy sortowania i przeszukiwania

2 Spis treści 1.Sortowanie przez wstawianie - InsertSort 2.Sortowanie przez wybór – SelectionSort 3.Algorytm sortowania bąbelkowego 4.Rekurencja 5.Szybkie sortowanie - quicksort

3 Sortowanie przez wstawianie - InsertSort Karty posortowaneKarty do posortowania Metoda sortowania przez wstawianie używana jest najczęściej przez osoby grające w karty. Polega ona na założeniu, że w danym momencie w ręku trzymamy jednocześnie karty posortowane i nieposortowane. W celu realizacji zadania porządkowania należy pobrać ze sterty kart do posortowania kartę i wstawienia jej na odpowiednie miejsce w obszarze kart posortowanych.

4 Sortowanie przez wstawianie - InsertSort Dane: n - liczba elementów w sortowanym zbiorze, d[ ] – zbiór, który będzie sortowany. Wynik: Uporządkowany zbiór d[ ] Algorytm: porządkowanie przez wstawianie– InsertSort Krok 1. Dla i = 1, 2,..., n – 1 wykonaj kroki 2 … 4, a następnie zakończ algorytm Krok 2. x d[j]; i j + 1 Krok 3. Dopóki ( i n ) ( x > d[i] ): wykonuj d[i - 1] d[i]; i i + 1 Krok 4 d[i - 1] x

5 Sortowanie przez wstawianie - InsertSort for(j = n - 2; j >= 0; j--) { x = d[j]; i = j + 1; while((i d[i])) { d[i - 1] = d[i]; i++; } d[i - 1] = x; }

6 Sortowanie przez wstawianie - InsertSort Wnioski: - algorytm ten jest bardzo kosztownym algorytmem (klasa złożoności obliczeniowej – O(N 2 ) - nie nadaje się do porządkowania dużych zbiorów - postać algorytmu przejrzysta - algorytm krótki

7 Sortowanie przez wybór - SelectionSort Metoda porządkowania przez wybór polega na porządkowaniu zbioru w sposób rosnący tzn. element najmniejszy powinien znaleźć się na pierwszej pozycji. Metoda ta polega na znalezieniu w zbiorze elementu najmniejszego i wymienieniu go z elementem na czytanej pozycji zbioru aż do całkowitego jego uporządkowania. Zbiór nieuporządkowany Etapy porządkowania

8 Sortowanie przez wybór - SelectionSort Dane: n - liczba elementów zbioru, d[ ] – zbiór sortowany. Elementy zbioru mają indeksy od 1 do n. Wynik: Uporządkowany zbiór d[ ] Algorytm: porządkowanie przez wybór – Selection Sort Idea: najmniejszy wśród nieuporządkowanych daj na początek Krok 1. Dla j = 1, 2,..., n - 1: wykonuj Krok 1...Krok 4, a następnie zakończ algorytm Krok 2. p min j Krok 3. Dla i = j + 1, j + 2,..., n: jeśli d[i] < d[p min ], to p min i Krok 4. d[j] d[p min ]

9 Sortowanie przez wybór - SelectionSort for(j = 0; j < N - 1; j++) { pmin = j; for(i = j + 1; i < N; i++) { if(d[i] < d[pmin]) pmin = i; } swap(d[pmin], d[j]); }

10 Sortowanie przez wybór - SelectionSort Wnioski: - algorytm ten jest bardzo kosztownym algorytmem (klasa złożoności obliczeniowej – O(N 2 ) - nie nadaje się do porządkowania dużych zbiorów - wykonuje taką samą ilość operacji porównania dla zbiorów częściowo uporządkowanych jak i dla zbiorów nieuporządkowanych - algorytm przejrzysty, zwięzły

11 Algorytm sortowania bąbelkowego Metoda porządkowania bąbelkowego swoją nazwę wzięła od pęcherzyków powietrza ulatujących w górę tuby wypełnionej wodą. Metoda ta polega na analizowaniu dwóch sąsiadujących ze sobą elementów, jeśli nie są one uporządkowane następuje ich zamiana Indeks tablicy Etapy

12 Algorytm sortowania bąbelkowego Dane: n - liczba elementów zbioru, d[ ] – zbiór sortowany. Elementy zbioru mają indeksy od 1 do n. Wynik: Uporządkowany zbiór d[ ] Algorytm: porządkowanie bąbelkowe Krok 1. Dla j = n - 1, n - 2,..., 1: wykonuj K02...K04, zakończ algorytm Krok 2. p 1 Krok 3. Dla i = 1, 2,..., j: jeśli d[i] > d[i + 1], to d[i] d[i + 1]; p 0 Krok 4. Jeśli p = 1, to zakończ

13 Algorytm sortowania bąbelkowego for(j = N - 1; j > 0; j--) { p = 1; for(i = 0; i < j; i++) { if(d[i] > d[i + 1]) { swap(d[i], d[i + 1]); p = 0; } if(p) break; }

14 Algorytm sortowania bąbelkowego Wnioski: - algorytm ten jest bardzo kosztownym algorytmem (klasa złożoności obliczeniowej – O(N 2 ) - bardzo prosta i zrozumiała struktura zapisu - dość często zdarzają się puste przebiegi (brak wykonania wymiany jeżeli elementu są uporządkowane)

15 Rekurencja Rekurencja - jest modą programowania polegająca na wywoływaniu funkcji programu przez samą siebie. Przykład: long int silnia(int x) { if (x==0) { return 1; } else { return x * silnia(x-1); }

16 Szybkie sortowanie - quicksort Algorytm ten jak sama nazwa wskazuje, poprzez odpowiednią dekompozycję osiągnął znaczny zysk w szybkości porządkowania zbiorów. Metoda szybkiego sortowania podzielona została na dwie części: część służąca do właściwego sortowania polegająca na wywoływaniu samej siebie część odpowiadająca za rozdzielenie elementów tablicy wartości osiowej podziału P < PP>= P

17 Szybkie sortowanie - quicksort

18 Szybkie sortowanie - quicksort Oznaczenia: left – lewy skrajny element right – prawy skrajny element p – wartość osiowa i – zmienna sterująca pętlą m – poszukiwany indeks komórki tablicy, w której umieszczamy element osiowy

19 Szybkie sortowanie - quicksort void qsort(int* d, int left, int right) { if (left < right) { int m = left; for(int i = left+1; i <= right; i++) if (d[i] < d[left]) swap(d[++m],d[i]); swap(d[left], d[m]); qsort(d, left, m-1); qsort(d, m+1, right); }

20 Szybkie sortowanie - quicksort Wnioski: - dzięki zastosowaniu metody programowania dziel i zwyciężaj algorytm w optymalnie krótkim czasie realizuje zadanie porządkowania zbiory (klasa złożoności obliczeniowej – O(N log N)


Pobierz ppt "Algorytmy sortowania i przeszukiwania. Spis treści 1.Sortowanie przez wstawianie - InsertSort 2.Sortowanie przez wybór – SelectionSort 3.Algorytm sortowania."

Podobne prezentacje


Reklamy Google