Sortowanie szybkie Quick Sort

Podobne dokumenty
Sortowanie szybkie Quick Sort

Problem plecakowy (KNAPSACK PROBLEM).

BADANIA OPERACYJNE. Podejmowanie decyzji w warunkach niepewności. dr Adam Sojda

Strategia "dziel i zwyciężaj"

Wstęp Funkcja pliki nagłówkowe i typ tablicowy. Wstęp Pliki nagłówkowe i typ tablicowy. Wstęp Funkcja fill_array() Wstęp. Notatki. Notatki.

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 )

Przykład 5.1. Kratownica dwukrotnie statycznie niewyznaczalna

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

Sortowanie przez wstawianie Insertion Sort

KRZYWA BÉZIERA TWORZENIE I WIZUALIZACJA KRZYWYCH PARAMETRYCZNYCH NA PRZYKŁADZIE KRZYWEJ BÉZIERA

Sortowanie przez scalanie

STATYSTYKA MATEMATYCZNA WYKŁAD 5 WERYFIKACJA HIPOTEZ NIEPARAMETRYCZNYCH

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

Zaawansowane metody numeryczne

Typ może być dowolny. //realizacja funkcji zamiana //przestawiajacej dwa elementy //dowolnego typu void zamiana(int &A, int &B) { int t=a; A=B; B=t; }

Natalia Nehrebecka. Zajęcia 4

Stanisław Cichocki Natalia Nehrebecka. Zajęcia 4

Analiza danych OGÓLNY SCHEMAT. Dane treningowe (znana decyzja) Klasyfikator. Dane testowe (znana decyzja)

D Archiwum Prac Dyplomowych - Instrukcja dla studentów

Sortowanie. LABORKA Piotr Ciskowski

Regulamin promocji 14 wiosna

WikiWS For Business Sharks

SZTUCZNA INTELIGENCJA

Weryfikacja hipotez dla wielu populacji

p Z(G). (G : Z({x i })),

Algorytm selekcji Hoare a. Łukasz Miemus

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

Krzysztof Borowski Zastosowanie metody wideł cenowych w analizie technicznej

Wyszukiwanie. Wyszukiwanie

Wykład 1 Zagadnienie brzegowe liniowej teorii sprężystości. Metody rozwiązywania, metody wytrzymałości materiałów. Zestawienie wzorów i określeń.

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

Projekt 6 6. ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH CAŁKOWANIE NUMERYCZNE

Statystyka Opisowa 2014 część 1. Katarzyna Lubnauer

ZESTAW ZADAŃ Z INFORMATYKI

Algorytmy i Struktury Danych.

= σ σ. 5. CML Capital Market Line, Rynkowa Linia Kapitału

Zmodyfikowana technika programowania dynamicznego

Algorytmy szukania równowag w grach dwumacierzowych

Regulamin promocji upalne lato

Rozwiązywanie zadań optymalizacji w środowisku programu MATLAB

Stanisław Cichocki. Natalia Nehrebecka. Wykład 7

Sortowanie. Bartman Jacek Algorytmy i struktury

Regulamin promocji zimowa piętnastka

Stanisław Cichocki. Natalia Nehrebecka. Wykład 6

Algorytmy. i podstawy programowania. eci. Proste algorytmy sortowania tablic. 4. Wskaźniki i dynamiczna alokacja pami

Odtworzenie wywodu metodą wstępującą (bottom up)

ż ż ć ż ż ż ć Ć ć ż ż ć ż


Ą ć

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

Stanisław Cichocki. Natalia Nehrebecka. Wykład 6

Statystyka. Zmienne losowe

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

Efektywna metoda sortowania sortowanie przez scalanie

11/22/2014. Jeśli stała c jest równa zero to takie gry nazywamy grami o sumie zerowej.

Wstęp do programowania

Badanie współzależności dwóch cech ilościowych X i Y. Analiza korelacji prostej

Ą ź Ż Ź Ź Ż Ż Ż Ż Ż Ź Ż Ź

I. Elementy analizy matematycznej

Zestaw zadań 4: Przestrzenie wektorowe i podprzestrzenie. Liniowa niezależność. Sumy i sumy proste podprzestrzeni.

SZACOWANIE NIEPEWNOŚCI POMIARU METODĄ PROPAGACJI ROZKŁADÓW

Sortowanie Shella Shell Sort

Programowanie Równoległe i Rozproszone

Lista 6. Kamil Matuszewski X X X X X X X X X X X X

Natalia Nehrebecka. Wykład 2

ż ć ż ń Ń Ż ń ń ć ż ż ć Ż

Temat: Algorytmy zachłanne

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

Stanisław Cichocki. Natalia Nehrebecka. Wykład 6

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

Metodyki i Techniki Programowania 2

Modele wieloczynnikowe. Modele wieloczynnikowe. Modele wieloczynnikowe ogólne. α β β β ε. Analiza i Zarządzanie Portfelem cz. 4.

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

Natalia Nehrebecka. Zajęcia 3

SZTUCZNA INTELIGENCJA

Definicje ogólne

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Analiza empiryczna struktury handlu międzynarodowego. Zajęcia z TWM dr Leszek Wincenciak

ZAGADNIENIE TRANSPORTOWE

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

Algorytmy sortujące i wyszukujące

Podstawy teorii falek (Wavelets)

Funkcje i charakterystyki zmiennych losowych

Regulamin promocji fiber xmas 2015

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

RÓWNOWAGA STACKELBERGA W GRACH SEKWENCYJNYCH

Problemy jednoczesnego testowania wielu hipotez statystycznych i ich zastosowania w analizie mikromacierzy DNA

SYSTEMY UCZĄCE SIĘ WYKŁAD 5. LINIOWE METODY KLASYFIKACJI. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

Wstęp do programowania

n liczba zmiennych decyzyjnych c współczynniki funkcji celu a współczynniki przy zmienych decyzyjnych w warunkach

Procedura normalizacji

Badania operacyjne w logistyce i zarządzaniu produkcją

Matematyczne Podstawy Informatyki

System Przeciwdziałania Powstawaniu Bezrobocia na Terenach Słabo Zurbanizowanych SPRAWOZDANIE Z BADAŃ Autor: Joanna Wójcik

V. TERMODYNAMIKA KLASYCZNA

KURS STATYSTYKA. Lekcja 1 Statystyka opisowa ZADANIE DOMOWE. Strona 1

Struktury Danych i Złożoność Obliczeniowa

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Proces narodzin i śmierci


Transkrypt:

Sortowane szybke Quck Sort Algorytm sortowana szybkego opera sę na strateg "dzel zwycęża" (ang. dvde and conquer), którą możemy krótko scharakteryzować w trzech punktach: 1. DZIEL - problem główny zostae podzelony na podproblemy 2. ZWYCIĘŻAJ - znaduemy rozwązane podproblemów 3. POŁĄCZ - rozwązana podproblemów zostaą połączone w rozwązane problemu głównego Idea sortowana szybkego est następuąca: (DZIEL) : naperw sortowany zbór dzelmy na dwe częśc w tak sposób, aby wszystke elementy leżące w perwsze częśc (zwane lewą partycą) były mnesze lub równe od wszystkch elementów druge częśc zboru (zwane prawą partycą). (ZWYCIĘŻAJ) : każdą z partyc sortuemy rekurencyne tym samym algorytmem. (POŁĄCZ) : połączene tych dwóch partyc w eden zbór dae w wynku zbór posortowany. Sortowane szybke zostało wynalezone przez angelskego nformatyka, profesora Tony'ego Hoare'a w latach 60-tych ubegłego weku. W przypadku typowym algorytm ten est naszybszym algorytmem sortuącym z klasy złożonośc oblczenowe O(n log n) - stąd pochodz ego popularność w zastosowanach. Musmy ednak pamętać, ż w pewnych sytuacach (zależnych od sposobu wyboru pwotu oraz nekorzystnego ułożena danych weścowych) klasa złożonośc oblczenowe tego algorytmu może sę degradować do O(n 2 ), co prof. Tony Hoare węce, pozom wywołań rekurencynych może spowodować przepełnene stosu zablokowane komputera. Z tych powodów algorytmu sortowana szybkego ne można stosować bezmyślne w każde sytuac tylko dlatego, ż est uważany za eden z naszybszych

algorytmów sortuących - zawsze należy przeprowadzć analzę możlwych danych weścowych właśne pod kątem przypadku nekorzystnego - czasem lepszym rozwązanem może być zastosowane algorytmu sortowana przez kopcowane, który ngdy ne degradue sę do klasy O(n 2 ). Tworzene partyc Do utworzena partyc musmy ze zboru wybrać eden z elementów, który nazwemy pwotem. W lewe partyc znadą sę wszystke elementy newększe od pwotu, a w prawe partyc umeścmy wszystke elementy nemnesze od pwotu. Położene elementów równych ne wpływa na proces sortowana, zatem mogą one występować w obu partycach. Równeż porządek elementów w każde z partyc ne est ustalony. Jako pwot można wyberać element perwszy, środkowy, ostatn, medanę lub losowy. Dla naszych potrzeb wyberzemy element środkowy: pwot d[(lewy + prawy) dv 2] pwot - element podzałowy d[ ] - dzelony zbór lewy - ndeks perwszego elementu prawy - ndeks ostatnego elementu Dzelene na partyce polega na umeszczenu dwóch wskaźnków na początku zboru - oraz. Wskaźnk przebega przez zbór poszukuąc wartośc mneszych od pwotu. Po znalezenu take wartośc est ona wymenana z elementem na pozyc. Po te operac wskaźnk est przesuwany na następną pozycę. Wskaźnk zapamętue pozycę, na którą traf następny element oraz na końcu wskazue mesce, gdze znadze sę pwot. W trakce podzału pwot est bezpeczne przechowywany na ostatne pozyc w zborze. Dla przykładu podzelmy na partyce zbór: { 7 2 4 7 3 1 4 6 5 8 3 9 2 6 7 6 3 } Lp. Operaca Ops 1. 2. 7 2 4 7 3 1 4 6 5 8 3 9 2 6 7 6 3 7 2 4 7 3 1 4 6 3 8 3 Wyznaczamy na pwot element środkowy. Pwot wymenamy z ostatnm elementem zboru

3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 7 2 4 7 3 1 4 6 3 8 3 7 2 4 7 3 1 4 6 3 8 3 2 7 4 7 3 1 4 6 3 8 3 2 7 4 7 3 1 4 6 3 8 3 2 4 7 7 3 1 4 6 3 8 3 2 4 7 7 3 1 4 6 3 8 3 2 4 3 7 7 1 4 6 3 8 3 2 4 3 7 7 1 4 6 3 8 3 2 4 3 1 7 7 4 6 3 8 3 2 4 3 1 7 7 4 6 3 8 3 2 4 3 1 4 7 7 6 3 8 3 2 4 3 1 4 7 7 6 3 8 3 2 4 3 1 4 3 7 6 7 8 3 Na początku zboru ustawamy dwa wskaźnk. Wskaźnk będze przeglądał zbór do przedostatne pozyc. Wskaźnk zapamętue mesce wstawana elementów mneszych od pwotu Wskaźnkem szukamy elementu mneszego od pwotu Znalezony element wymenamy z elementem na pozyc -te. Po wymane wskaźnk przesuwamy o 1 pozycę. Wymenamy przesuwamy. Wymenamy przesuwamy. Wymenamy przesuwamy. Wymenamy przesuwamy. Wymenamy przesuwamy.

16. 2 4 3 1 4 3 7 6 7 8 3 17. 18. 19. 20. 2 4 3 1 4 3 3 6 7 8 7 2 4 3 1 4 3 3 6 7 8 7 2 4 3 1 4 3 3 2 7 8 7 9 6 6 7 6 5 2 4 3 1 4 3 3 2 5 8 7 9 6 6 7 6 7 ^ Lewa partyca Prawa partyca Wymenamy przesuwamy. Wymenamy przesuwamy. Brak dalszych elementów do wymany. Pwot wymenamy z elementem na pozyc -te. Podzał na partyce zakończony. Po zakończenu podzału na partyce wskaźnk wyznacza pozycę pwotu. Lewa partyca zawera elementy mnesze od pwotu rozcąga sę od początku zboru do pozyc - 1. Prawa partyca zawera elementy wększe lub równe pwotow rozcąga sę od pozyc + 1 do końca zboru. Operaca podzału na partyce ma lnową klasę złożonośc oblczenowe - O(n). Specyfkaca problemu Sortu_szybko(lewy, prawy) Dane weścowe d[ ] - Zbór zaweraący elementy do posortowana. Zakres ndeksów elementów est dowolny. lewy - ndeks perwszego elementu w zborze, lewy C prawy - ndeks ostatnego elementu w zborze, prawy C Dane wyścowe d[ ] - Zbór zaweraący elementy posortowane rosnąco

Zmenne pomocncze pwot - element podzałowy, - ndeksy,, C Lsta kroków Algorytm sortowana szybkego wywołuemy podaąc za lewy ndeks perwszego elementu zboru, a za prawy ndeks elementu ostatnego (czyl Sortu_szybko(1,n)). Zakres ndeksów est dowolny - dzęk temu ten sam algorytm może równeż sortować fragment zboru, co wykorzystuemy przy sortowanu wylczonych partyc.

Schemat blokowy Na element podzałowy wyberamy element leżący w środku dzelone partyc. Wylczamy ego pozycę zapamętuemy ą tymczasowo w zmenne. Robmy to po to, aby dwukrotne ne wykonywać tych samych rachunków. Element d[] zapamętuemy w zmenne pwot, a do d[] zapsuemy ostatn element partyc. Dzęk te operac pwot został usunęty ze zboru. Ustawamy zmenną na początek partyc. Zmenna ta zapamętue pozycę podzału partyc. W pętl sterowane zmenną przeglądamy kolene elementy od perwszego do przedostatnego (ostatn został umeszczony na pozyc pwotu, a pwot zapamętany). Jeśl -ty element est mneszy od pwotu, to trafa on na początek partyc - wymenamy ze sobą elementy na pozycach -te -te. Po te operac przesuwamy punkt podzałowy partyc. Po zakończenu pętl element z pozyc -te przenosmy na konec partyc, aby zwolnć mesce dla pwotu, po czym wstawamy tam pwot. Zmenna wskazue zatem wynkową pozycę pwotu. Perwotna partyca została podzelona na dwe partyce:

partyca lewa od pozyc lewy do - 1 zawera elementy mnesze od pwotu partyca prawa od pozyc + 1 do pozyc prawy zawera elementy wększe lub równe pwotow. Sprawdzamy, czy partyce te obemuą węce nż eden element. Jeśl tak, to wywołuemy rekurencyne algorytm sortowana szybkego przekazuąc mu grance wyznaczonych partyc. Po powroce z wywołań rekurencynych partyca wyścowa est posortowana rosnąco. Kończymy algorytm.