Sortowanie. Bartman Jacek Algorytmy i struktury

Podobne dokumenty
Algorytmy i struktury danych

Algorytmy i struktury danych

Sortowanie. LABORKA Piotr Ciskowski

Definicja. 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 )

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Sortowanie bąbelkowe

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Algorytmy i Struktury Danych

ALGORYTMY I STRUKTURY DANYCH

Laboratorium nr 7 Sortowanie

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:

Sortowanie Shella Shell Sort

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Sortowanie - wybrane algorytmy

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Algorytmy sortujące i wyszukujące

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Tadeusz Pankowski

Teoretyczne podstawy informatyki

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Sortowanie przez wstawianie Insertion Sort

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Podstawy Informatyki. Metody dostępu do danych

Złożoność obliczeniowa zadania, zestaw 2

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

Wstęp do programowania

Strategia "dziel i zwyciężaj"

Temat: Algorytm kompresji plików metodą Huffmana

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

INFORMATYKA SORTOWANIE DANYCH.

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy i struktury danych

Wstęp do programowania

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

Algorytmy sortujące. Sortowanie bąbelkowe

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

PODSTAWY INFORMATYKI wykład 5.

Bazy danych. Andrzej Łachwa, UJ, /15

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

ALGORYTMY I STRUKTURY DANYCH

BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Struktury danych: stos, kolejka, lista, drzewo

Temat 7. Najlżejsze i najcięższe algorytmy sortowania

Bazy danych - BD. Indeksy. Wykład przygotował: Robert Wrembel. BD wykład 7 (1)

Algorytmy sortowania wewnętrznego

Podstawowe struktury danych

Wysokość drzewa Głębokość węzła

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe

Wykład 8. Drzewa AVL i 2-3-4

Teoretyczne podstawy informatyki

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Programowanie w VB Proste algorytmy sortowania

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

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:

Wybrane algorytmy tablicowe

BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza

Przykładowe B+ drzewo

Sortowanie danych. Jolanta Bachan. Podstawy programowania

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Efektywna metoda sortowania sortowanie przez scalanie

Algorytm selekcji Hoare a. Łukasz Miemus

[12] Metody projektowania algorytmów (dziel i rządź, programowanie dynamiczne i algorytmy zachłanne).

KOPCE KOLEJKI PRIORYTETOWE - PRZYPOMNIENIE KOPCE WYSOKOŚĆ KOPCA KOPCE I KOLEJKI PRIORYTETOWE PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI

Laboratoria nr 1. Sortowanie

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja

Algorytmy. 1. Sortowanie 2. Statki i okręty. programowanie cz.7. poniedziałek, 2 marca 2009

Metodyki i Techniki Programowania 2

Algorytmy i Struktury Danych, 2. ćwiczenia

Java Collections Framework

Drzewa poszukiwań binarnych

Analiza algorytmów zadania podstawowe

Jeszcze o algorytmach

Struktury Danych i Złożoność Obliczeniowa

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

Struktury Danych i Złożoność Obliczeniowa

Optymalizacja poleceń SQL Metody dostępu do danych

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Luty 2001 Algorytmy (4) 2000/2001

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Transkrypt:

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 41 56 88 24 03 72 17 39 41 56 88 24 03 72 17 24 39 41 56 88 03 72 03 17 24 39 41 56 88 72 03 17 24 39 41 56 72 88

Sortowanie przez proste wybieranie przykład 41 56 17 39 88 24 03 72 03 56 17 39 88 24 41 72 03 17 56 39 88 24 41 72 03 17 24 39 88 56 41 72 03 17 24 39 88 56 41 72 03 17 24 39 41 56 88 72 03 17 24 39 41 56 88 72 03 17 24 39 41 56 72 88

Sortowanie przez prostą zamianę przykład 03 < 03 03 03 < < < 03 < 41 56 17 39 88 03 < 24 03 < 72 41 56 17 03 41 56 39 17 88 39 24 88 03 24 72 72 03 17 41 56 24 39 88 72 03 17 24 41 56 39 72 88 03 17 24 39 41 56 72 88 03 17 03 17 24 24 39 39 41 41 56 56 72 88 03 17 24 39 41 56 72 72 88 88

Sortowanie za pomocą malejących przyrostów metoda Shella Metoda jest rozwinięciem metody sortowania przez wstawianie. W metodzie tej, najpierw grupuje się i sortuje oddzielnie wszystkie elementy oddalone o pewną odległość (przyrost) h (tj. oddalone co h ). W pierwszym kroku metody tworzy się więc n-podzbiorów, które sortowane są ą metodą ą przez wstawianie. W następnych krokach powtarza się taką operację dla coraz mniejszych odległości h, aż do momentu gdy h=1, co odpowiada normalnemu sortowaniu całego zbioru (elementy oddalone co jeden ).

Sortowanie metodą Shella - przykład

Sortowanie metodą Shella przykład

Sortowanie metodą Shella Metoda ta jest bardzo efektywna, pomimo, że występuje kilka wstępnych procesów sortowań. Dla dużych wartości odstępu h, sortowane zbiory mają mało elementów. Dla małych h zbiory są już znacznie uporządkowane. W obu tych przypadkach sortowanie takich zbiorów za pomocą metody przez wstawiane jest bardzo szybkie. Metoda działa najlepiej gdy przyrosty h nie są swoimi dzielnikami. Zaleca się stosowanie następujących przyrostów: h k-1 = 3h k + 1, h t = 1, t = log 3 n-1... 121, 40, 13, 4, 1 lub: h k-1 = 2h k + 1, h t = 1, t = log 2 n-1... 31, 15, 7, 3, 1 Efektywność metody: Po, Pr ~ n 1,2

Sortowanie przez podział - sortowanie szybkie Algorytm postępowania wybiera się losowo jakiś element x z sortowanego zbioru, przegląda się zbiór od strony lewej, aż znaleziony zostanie taki element A i, że A i x, przegląda się zbiór od strony prawej, aż znajdzie się element A j, taki że A j x, zamienia się miejscami elementy A i i A j, kontynuuje się proces przeglądania i zamiany, aż nastąpi spotkanie gdzieś w środku tablicy.

Sortowanie przez podział - sortowanie szybkie Miejsce spotkania wyznacza punkt podziału tablicy na dwie części. Lewa część składa się z elementów nie większych niż wybrany element x, prawa zaś z elementów nie mniejszych niż x. Takie części sortuje się następnie oddzielnie w sposób opisany powyżej. Powtarzanie tych operacji aż do momentu gdy części tablicy będą składały się z jednego elementu, doprowadzi do posortowania całej tablicy. Efektywność metody: Po ~ n*log(n), Pr ~ n

Sortowanie przez podział przykład

Sortowanie przez podział przykład

Sortowanie stogowe Drzewo porównań Dla n-elementowej tablicy można wyznaczyć drzewo porównań za pomocą n-1 operacji porównań kluczy elementów Każdy węzeł jest elementem o mniejszym kluczu z dwóch sąsiadujących w drzewie Na wierzchołku drzewa zawsze znajduje się element o najmniejszym kluczu!

Sortowanie drzewiaste - przykład

Sortowanie drzewiaste Sortowanie tablicy, dla której utworzono drzewo wymaga: pobrania elementu z wierzchołka (zawsze najmniejszy klucz) zastąpienie pobranego elementu elementem o mniejszym kluczu z niższego węzła Procedura taka pozwala odczytać z drzewa posortowane elementy tablicy Otrzymanie posortowanej tablicy wymaga n operacji odczytu z drzewa Każdy odczyt (wybieranie elementu z drzewa wymaga log2(n) porównań i przesunięć Cały proces sortowania przez wybieranie z drzewa wymaga więc n*log(n) operacji (oraz n-1 operacji potrzebnych do utworzenia drzewa)

Stóg Stóg jest strukturą drzewiastą, której każdy element jest nie większy od dwóch elementów bezpośrednio pod nim (potomków) Pomiędzy elementami na tym samym poziomie nie zachodzą żadne relacje Tworzenie struktury stogu wymaga (jak poprzednio n*log(n) operacji

Sortowanie stogowe Sortowanie stogowe polega na pobraniu elementu z wierzchołka, przesuwaniu elementów o mniejszych kluczach w górę drzewa i eliminacji jednego elementu z dołu struktury (liścia) Struktura stogu usprawnia sortowanie drzewiaste, ponieważ eliminuje niepotrzebne porównania elementu, który jest eliminowany z drzewa

Stóg reprezentacja tablicowa

Dodawanie elementów do stogu przesiewanie 44 42 10 55 94 18 12 Dodanie elementu musi utrzymać warunek stogu (liście potomne są nie większe niż ich rodzic). Nowy element wstawiany jest na wierzchołek drzewa, a następnie przesiewany przez węzły mniejszych elementów stogu,które podnoszą się przez to do góry. 44 42 10 55 94 18 12 44 42 10 55 94 18 12

Dodawanie elementów do stogu przesiewanie? 44 42 10 55 94 18 12? 10 42 44 55 94 18 12 Uzyskany zapis spełnia wymogi stawiane stogowi 10 42 12 55 94 18 44

Dodawanie elementów do stogu podsumowanie Dla tablicy n elementowej, elementy od (n div 2)+1 do n tworzą stos.

Sortowanie stogowe Mając tablice o strukturze stogu, sortowanie polega na: pobraniu z wierzchołka elementu i usunięciu go ze stogu przesianiu przez zmniejszony stóg elementu ostatniego w miejsce ostatniego elementu umieszczenie elementu zdjętego z wierzchołka 10 42 12 55 94 18 44 67 67 42 12 55 94 18 44 10 67 42 12 55 94 18 44 10 12 42 67 55 94 18 44 10 12 42 18 55 94 67 44 10 44 42 18 55 94 67 12 10

44 42 18 55 94 67 12 10 18 42 44 55 94 67 12 10 18 42 44 55 94 67 12 10 67 55 94 44 42 18 12 10 55 67 94 44 42 18 12 10 55 67 94 44 42 18 12 10 67 42 44 55 94 18 12 10 42 67 44 55 94 18 12 10 42 55 44 67 94 18 12 10 94 67 55 44 42 18 12 10 67 94 55 44 42 18 12 10 67 94 55 44 42 18 12 10 94 55 44 67 42 18 12 10 44 55 94 67 42 18 12 10 94 67 55 44 42 18 12 10 44 55 94 67 42 18 12 10