Sortowanie danych. Jolanta Bachan. Podstawy programowania

Podobne dokumenty
Programowanie w VB Proste algorytmy sortowania

Sortowanie - wybrane algorytmy

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Strategia "dziel i zwyciężaj"

Wstęp do programowania

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 )

Sortowanie przez scalanie

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

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

Algorytmy sortujące i wyszukujące

Laboratorium nr 7 Sortowanie

Analiza algorytmów zadania podstawowe

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 9. Karol Tarnowski A-1 p.

Algorytmy i Struktury Danych.

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

INFORMATYKA SORTOWANIE DANYCH.

Efektywna metoda sortowania sortowanie przez scalanie

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

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

Jeszcze o algorytmach

TEORETYCZNE PODSTAWY INFORMATYKI

Wstęp do programowania

Wykład 3. Metoda dziel i zwyciężaj

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

Struktury Danych i Złożoność Obliczeniowa

Sortowanie bąbelkowe

Wstęp do programowania

Zaawansowane algorytmy i struktury danych

Sortowanie. LABORKA Piotr Ciskowski

KONSPEKT ZAJĘĆ KOŁA INFORMATYCZNEGO LUB MATEMATYCZNEGO W KLASIE III GIMNAZJUM LUB I LICEUM ( 2 GODZ.)

Analiza algorytmów zadania podstawowe

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

Źródła. N.Wirth Algorithms and Data Structures, 1985 D.E.Knuth The Art of Computer Programming. Vol. 3, 1973

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

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Algorytmika i pseudoprogramowanie

Algorytmy przeszukiwania

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

PODSTAWY INFORMATYKI wykład 10.

PRZEDMIOTOWY SYSTEM OCENIANIA

Informatyka A. Algorytmy

Programowanie dynamiczne i algorytmy zachłanne

Część I. Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania. Zadanie 1.1. (0 3)

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

Algorytmy i Struktury Danych, 2. ćwiczenia

Programowanie Proceduralne

5. Podstawowe algorytmy i ich cechy.

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

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

Algorytmy i Struktury Danych.

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

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

ALGORYTMY POSZUKIWANIA I PORZĄDKOWANIA ELEMENTY JĘZYKA PROGRAMOWANIA

Laboratoria nr 1. Sortowanie

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

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Algorytmy sortujące 1

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

Algorytmy i Struktury Danych

Algorytmy i struktury danych

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA.

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

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

Teoretyczne podstawy informatyki

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Programowanie dynamiczne cz. 2

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Teoretyczne podstawy informatyki

PROGRAM KOŁA INFORMATYCZNEGO

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

WSTĘP DO INFORMATYKI WPROWADZENIE DO ALGORYTMIKI

Matematyczne Podstawy Informatyki

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili

Znajdowanie największego i najmniejszego elementu w zbiorze n liczb całkowitych

TEORETYCZNE PODSTAWY INFORMATYKI

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Algorytm selekcji Hoare a. Łukasz Miemus

Scenariusz lekcji. podać definicję metody zachłannej stosowanej w algorytmie; wymienić cechy algorytmów zachłannych;

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Sortowanie przez wstawianie Insertion Sort

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

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

Sortowanie Shella Shell Sort

Wykład 4. Sortowanie

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

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

Zaawansowane algorytmy i struktury danych

Temat: Algorytmy zachłanne

PODSTAWY INFORMATYKI wykład 5.

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

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

Transkrypt:

Sortowanie danych Podstawy programowania 2013-06-06

Sortowanie przez wybieranie 9 9 9 9 9 9 10 7 7 7 7 7 10 9 1 3 3 4 10 7 7 10 10 10 10 4 4 4 4 4 4 3 3 3 3 2 2 2 2 2 2 2 3 1 1 1 1 1 1 Gurbiel et al. 2000 2

Algorytm porządkowania przez wybór Dane: Liczba naturalna n i zbiór n liczb Wynik: Uporządkowanie tego zbioru liczb od najmniejszej do największej Krok 1: Wykonaj n-1 razy kroki 2 i 3 (iteracja) Krok 2: Znajdź najmniejszy element w nieuporządkowanej jeszcze części zbioru Krok 3: Zamień miejscami znaleziony element i pierwszy element w nieuporządkowanej części zbioru Gurbiel et al. 2000 3

Liczba porównań w algorytmie porządkowania przez wybór.... 100-1 100 99+98+97+96+...+5+4+3+2+1 100*99/2 = 50*99 = 4950 1+99,2+98,3+97,itd. Carl Friedrich Gauss Gurbiel et al. 2000 4

Sortowanie przez wstawianie Istota algorytmu przez wstawianie jest intuicyjna i polega na pobieraniu kolejnych elementów wejściowej tablicy i wstawianiu ich w odpowiednie miejsce w uporządkowanej tablicy. Działanie algorytmu: Dopóki w tablicy A[] są jakieś elementy, wyciągnij z tablicy A[] kolejne elementy i wstawiaj na odpowiednie miejsce w tablicy W[] Drzazga et al. 2001 5

Sortowanie przez wstawianie 7 10 8 3 5 7 10 8 3 5? 10 8 3 5?? 8 3 5??? 3 5???? 5????? 7???? 7 10??? 7 8 10?? 3 7 8 10? 3 5 7 8 10????? 3 5 7 8 10 Drzazga et al. 2001 6

Sortowanie bąbelkowe Ciąg wejściowy [4,2,5,1,7]. Każdy wiersz symbolizuje wypchnięcie kolejnego największego elementu na koniec ( wypłynięcie największego bąbelka ). Niebieskim kolorem oznaczono końcówkę ciągu już posortowanego. Wikipedia 7

Sortowanie szybkie (QuickSort) Jeżeli elementy w tablicy A[] rozłożone są tak, że istnieje jakiś element o indeksie k taki, że wszystkie elementy o indeksach mniejszych od k mają wartości mniejsze od A[k], a wszystkie elementy o indeksie większym od k są nie mniejsze od A[k], to wystarczy osobno posortować elementy po obu stronach indeksu k, aby otrzymać posortowaną tablicę. 5 6 5 2 3 10 12 15 14 Animacja szybkiego sortowania Drzazga et al. 2001 8

Sortowanie szybkie (QuickSort) 5 6 5 2 3 10 12 15 14 sortujemy sortujemy 5 6 2 3 5 10 12 14 15 Drzazga et al. 2001 9

Sortowanie szybkie (QuickSort) Algorytm szybkiego sortowania jest sztandarowym przykładem metody dziel i zwyciężaj. 3 etapy algorytmu to: 1. Dziel dzielenie problemu na kilka podproblemów tego samego typu. 2. Zwyciężaj operacje rozwiązujące dany podproblem, najczęściej wykorzystujące rekurencję. 3. Scalaj instrukcje pozwalające na podstawie rozwiązanych podproblemów rozwiązać problem główny Drzazga et al. 2001 10

Dziel i zwyciężaj Dziel i zwyciężaj (ang. divide and conquer) jedna z głównych metod projektowania algorytmów w informatyce, prowadząca do bardzo efektywnych rozwiązań. Nazwa pochodzi od łacińskiej sentencji dziel i rządź (łac. divide et impera). W strategii tej problem dzieli się rekurencyjnie na dwa lub więcej mniejszych podproblemów tego samego (lub podobnego) typu tak długo, aż fragmenty staną się wystarczająco proste do bezpośredniego rozwiązania. Z kolei rozwiązania otrzymane dla podproblemów scala się uzyskując rozwiązanie całego zadania. Klasyczne przykłady algorytmów korzystających z tej metody to m.in. sortowanie przez scalanie (mergesort), sortowanie szybkie (quicksort), wyszukiwanie binarne. Wikipedia 11

Pseudokod QuickSort PROCEDURE Quicksort(l, r) BEGIN END IF l < r THEN BEGIN END { jeśli fragment dłuższy niż 1 element } i = PodzielTablice(l, r); { podziel i zapamiętaj punkt podziału } Quicksort(l, i-1); { posortuj lewą część } Quicksort(i, r); { posortuj prawą część } Rekursja / Rekurencja odwołanie się funkcji lub definicji do samej siebie Wikipedia 12

Zadania Dowiedz się, jak działa sortowanie przez scalanie i jak się ono różni od szybkiego sortowania Dowiedz się, co to jest kopiec i jak działa sortowanie kopcem Animacja sortowania Dowiedz się, jak działa sortowanie kubełkowe Jakie własności określają dobry algorytm sortujący? Co to jest stos i co oznacza LIFO? Co to jest kolejka i co oznacza FIFO? Co to jest sterta? 13

Bibliografia Mirosław Drzazga, Tomasz Francuz, Marcin Szeliga. 2001. Zagadnienia maturalne z informatyki. Helion. Ewa Gurbiel, Grażyna Hardt-Olejniczak, Ewa Kołczyk, Helena Krupicka, Maciej M. Sysło. 2000. Informatyka. Podręcznik dla ucznia gimnazjum. Wydawnictwa Szkolne i Pedagogiczne. Wikipedia. http://pl.wikipedia.org/wiki/ Dziel i zwyciężaj. Rekurencja. Szybkie sortowanie. 14