Sortowanie przez kopcowanie

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

Wstawianie i wyszukiwanie kluczy w tablicach i drzewach binarnych
PRAM.
STRUKTURY DANYCH.
Temat: Funkcja wykładnicza
Sortowanie przez scalanie
Algorytmy sortowania i porządkowania
Algorytmy – c.d. złożoność algorytmów struktury danych
Algorytmy – c.d. struktury danych złożoność algorytmów
Grażyna Mirkowska PJWSTK 15 listopad 2000
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
ALGORYTMY I STRUKTURY DANYCH
Materiały pochodzą z Platformy Edukacyjnej Portalu
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
pseudokody algorytmów
ZŁOŻONOŚĆ OBLICZENIOWA
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 6: Tablice, rekordy, zbiory.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Kurs Pascala – spis treści
Ogólne jednostki programowe 1
Dynamiczne struktury danych 1
Wykład 2 struktura programu elementy języka typy zmienne
Algorytmy grafowe Reprezentacja w pamięci
22 listopada 2000Regula konkatenacji II1 Dziedziczenie (cd.) Reguła konkatenacji II przykład - heapsort Reguła konkatenacji III.
Typy wyrażenia, schematy blokowe, writeln, readln, if, pętle
Typy wskaźnikowe, dynamiczne struktury danych
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak
ALGORYTMY I STRUKTURY DANYCH
Algorytmy i struktury danych
Algorytmy i struktury danych
Dlaczego nie powinniśmy kształcić kolejnych sekretarek? Algorytmika jest dla każdego. Przemysław Szydzik { Wydawnictwo Szkolne PWN }
Podstawy programowania II
Algorytmy i Struktury Danych Sortowanie
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Struktura programu w Turbo Pascalu.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
DRZEWA BINARNE Emilia Krukowska.
Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ Podstawy Programowania Złożona składnia języka C++
Geometria obliczeniowa Wykład 4
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
Materiały pochodzą z Platformy Edukacyjnej Portalu
FUNKCJA LINIOWA.
DLACZEGO NIE POWINNIŚMY KSZTAŁCIĆ KOLEJNYCH SEKRETAREK?
Funkcja.
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Ogólna struktura programu w TP
Algorytmy i Struktury Danych
Algorytmy i Struktury Danych Struktury Danych
ANALIZA SKŁADNIOWA.
Sortowanie: kopce Parent(i)
Tablice Zajęcia 8. Definicja Tablica (z ang. array) jest zmienną złożoną, która składa się z ciągu elementów tego samego typu. W pamięci komputera tablica.
Teoretyczne Podstawy Informatyki - Rok I - kierunek IS w IFAiIS UJ – 2006/ /11/2006Prof. dr hab. Elżbieta Richter-Wąs Wykład 6 Model danych oparty.
METODY REPREZENTOWANIA IFORMACJI
ALGORYTMY I STRUKTURY DANYCH
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
Liczby 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …(i tak dalej) nazywamy liczbami naturalnymi. Tak jak z liter tworzy się słowa, tak z cyfr tworzymy liczby. Dowolną.
Kolejka priorytetowa.
ALGORYTMY I STRUKTURY DANYCH
Współprogramy IV.
Współprogramy II W tym wykładzie pogłębimy naszą znajomość z współprogramami. Omówimy współpracę procedur rekurencyjnych i współprogramów, wprowadzimy.
Algorytmy i struktury danych
Dane, zmienne, instrukcje
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Format rozkazu Tryby adresowania.
Moje drzewo genealogiczne — przykład
Zapis prezentacji:

Sortowanie przez kopcowanie

Sortowanie przez kopcowanie (HeapSort) Metoda z wykorzystaniem struktury kopca Efektywna w wypadku liczb całkowitych Zajmuje mało pamięci operacyjnej

Definicja kopca Kopcem nazywa się strukturę danych, którą można rozpatrywać jako drzewo binarne zawarte w tablicy. Każdy węzeł drzewa binarnego odpowiada dokładnie jednemu elementowi danych zawartemu w tablicy.

Warunek kopca Wartość przechowywana w dowolnym węźle drzewa binarnego powinna być nie mniejsza (lub nie większa) od wartości przechowywanych w węzłach potomnych. Spełnia warunek kopca malejącego Spełnia warunek kopca rosnącego Nie spełnia warunku kopca

Prawidłowo skonstruowany kopiec

Index rodzica = index syna div 2 Index lewego syna = index ojca * 2 Index prawego syna = index ojca *2 + 1

Procedure Heapify(x: integer); var pmin, l, r : integer; begin l:= x*2; p:=x*2+1; if (l<=rozmiar) and (heap[l]<heap[x]) then pmin:=l else pmin:=x; if (p<=rozmiar) and (heap[p]<heap[min]) then pmin:=p; if pmin<>x then zamien(x,pmin); Heapify(pmin); end;

Przebieg kopcowania

Procedure Build_Heap (rozmiar:integer); var x:integer; begin For x:=(rozmiar div 2) downto 1 do Heapify(x); End;

Idea sortowania Zaczynasz od zbudowania kopca – deklarujesz tablicę i za pomocą procedury Build_Heap doprowadzasz do spełnienia w obrębie całej tablicy warunków wymaganych dla kopca

Kolejno, w pętli wykonujesz następujące czynności, aż do momentu, gdy rozmiar kopca będzie równy 2: zamieniasz wartość, która znalazła się na wierzchołku z ostatnim – rozpatrywanym elementem kopca, zmniejszasz wartość zmiennej przechowującej informację o rozmiarze kopca (chodzi o to, by powtórnie nie rozpatrywać elementu ustawionego na końcu), przywracasz procedurą Heapify(1) konstrukcję kopca dla zmniejszonej liczby elementów.