För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sorterings algoritmer.

Slides:



Advertisements
Liknande presentationer
Kursen Avfallshantering • Här är några frågor som behandlas under kursen: – Hur fungerar avfallshanteringen i Finland? – Vem ansvarar för vad? – Hur tackla.
Advertisements

Ruttplanering Vad är det??.
Algoritmer och data strukturer -Länkade listor
Sökning och sortering Linda Mannila
DAB752: Algoritmteori Leif Grönqvist
För utveckling av verksamhet, produkter och livskvalitet. Rekursiva algoritmer, en annan sort tänkande -Hur -När -Bra/Dåligt (kap 7)
2D1311 Programmeringsteknik med PBL
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Lite mer rekursivitet -Sorterrings algoritmer -- Kapitel 8 Algoritmer.
Algoritmer och datastrukturer
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
Programmeringsteknik för K och Media
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 6 Asymtotisk analys.
Algoritm analys och rekursiva metoder kap 5,7
Repetition inför slutprovet
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Algoritmer och datastrukturer
Vägen till ökad konkurrenskraft? Slutsatser? »Hur kan byggbranschen använda detta?
Rekursiva algoritmer Hur När Bra/Dåligt (kap 7).
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
Innovativa e-tjänster för kompetensutveckling och verksamhetsstöd för kundservice Innoveta.
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
TILLÄMPAD DATALOGI (TILDA) Övning 3
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
INFORMATIONSSYSTEM Informationssystem: datoriserat system som stödjer en organisations informationsförsörjning VERKSAMHET avbildar Definitionen alltför.
Datastrukturer och algoritmer
KLARA kemikaliehanteringssystem
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Sökträd, naiva och balancerade lösningar -HashTable -- Kapitel.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13.
Tekis FDO-läsare Topobase årsmöte 2009 Mats Norberg.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
2D1311 Programmeringsteknik med PBL
Datastrukturer och algoritmer VT08 P = ((C,F,3), (B,D,3), (C,G,4),(A,F,4), (A,R,4), (C,D,5), (E,G,6), (B,R,6), (A,E,6), (A,C,8)) A R B F C D E G
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
TILLÄMPAD DATALOGI (TILDA) Övning 4
Gilla Din Ekonomi - Skola. INFORMATÖRSUTBILDNING FI:s huvudsakliga mål  Bidra till ett stabilt och finansiellt system med ett högt skydd för konsumenter.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
1 Övning6 Läsning från fil till java objekt Sökning Sortering.
Vad är ett informationssystem?
Malmö högskola Rolf Axelsson 2003/2004 DA7235, 4 poäng Fält som returvärde Sortera fält Söka i fält Tvådimensionella fält Fält och spelplan Föreläsning.
Karlstads universitet Datavetenskap DAVA07/08 JE,MG,MG,PS Kontraktsprogrammering.
Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng Fält - Vektor - Array Deklarera, skapa och använda Fält som parameter Föreläsning 9.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 4.
DA7351 Programmering 1 Fält och objekt Tvådimensionella fält Sortera fält Föreläsning 13.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Fält - Vektor - Array Deklarera, skapa och använda Fält som parameter Föreläsning 9.
DA7351 Programmering 1 Undantag Klassen Class Rekursion (extra) Föreläsning 19.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sökning, Symbol tabeller Binära sökträd.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
Affärssystem och ekonomi, termin 3 ht15 Databasdesign, 7.5 hp, v35-39, KAU OO modellering, 7.5 hp, v40-44, KAU Fritt val eller följande: Programutveckling,
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Introduktion till MIRIAM
Roland Carlsson Strategisk Logistik 2016 Roland Carlsson Ruttplanering.
Ruttplanering Vad är det??.
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Föreläsning 11: Rekursion
Föreläsning 8: Exempel och problemlösning
Algoritmer och datastrukturer
Sökning gjord 18 feb Öppenvård inkl även öppenvårdsrekvisition
 U Q  A  S V   P R T   Prioritetskö <P,0>
Algoritmer och datastrukturer, förel. 1
Presentationens avskrift:

För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sorterings algoritmer

För utveckling av verksamhet, produkter och livskvalitet. Varför är sortering viktigt ? Göra sökning effektivare, med syfte att effektivisera hantering av stora datamängder. - Binärsökning Förenklar många algoritmer

För utveckling av verksamhet, produkter och livskvalitet. Varför är sortering viktigt ? En förenklad algoritm public static boolean duplicates( int [] a) { for(int i=0;i<a.lenght;i++) for(int j=i+1;j<a.length; j++) if(a[i]==a[j]); return true ; return false; } Om en samling data är sorterad, effektiviteten av alla algoritmer på respektive datan ökar betydligt.

För utveckling av verksamhet, produkter och livskvalitet. Kvadratiska O(n^2) sorteringar public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; } Tidskomplexitet O( ? ) Om arrayen är redan sorterad? Ex.tiden O( ? )

För utveckling av verksamhet, produkter och livskvalitet. insertionSort public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. temp= public static void insertionSort(int [] a) { for(int p=1;p<a.length;p++){ int temp=a[p]; int j=p; for (; j>0 && temp<a[j-1] ; j--){ a[j]=a[j-1]; } a[j]=temp; }

För utveckling av verksamhet, produkter och livskvalitet. insertionSort()- speciellt fall Vad blir exekveringstiden när arrayen är sorterad? Tidskomplexitet (värstafall): …. + n-1 = n(n-1)/2 = O(n^2)

För utveckling av verksamhet, produkter och livskvalitet. Subkvadratiska sorteringsalgoritmer använder divade & conquer - strategi Merge Sort O( NlogN) Dela arrayen i två halvor, sortera halvorna och sedan sätter ihopp halvorna ( merge) i en sorterad array Quick Sort O(NlogN) Dela arrayen i två delar genom att välja ett element i arrayen som pivot. Element som är mindre en pivoten flyttas till enda delen, element som är större till den andra. Sortera delarna.

För utveckling av verksamhet, produkter och livskvalitet. Divade & Conquer - strategi  Att dela ett problem i två mindre ”subproblem” rekursivt repeterade gånger ( tills det inte går att dela mer)  Att sätta ihop lösningen till ”subproblemen”. Resultatet blir lösningen för original problemet.

För utveckling av verksamhet, produkter och livskvalitet. MergeSort -algoritmen

För utveckling av verksamhet, produkter och livskvalitet. MergeSort

För utveckling av verksamhet, produkter och livskvalitet. MergeSort

För utveckling av verksamhet, produkter och livskvalitet. MergeSort

För utveckling av verksamhet, produkter och livskvalitet. MergeSort-algoritmen

För utveckling av verksamhet, produkter och livskvalitet. Tidskomplexiteten? O (?) Dela i två halvor Sortera halvorna genom att göra ”merge” till en temp array Kopiera temp arrayen tillbaka till original arrayen

För utveckling av verksamhet, produkter och livskvalitet. Java implementation av MergeSort() public static void mergeSort( int [] a) { int [] temp= new int[a.length]; mergeSort (a, temp, 0, a.length-1); } private static void mergeSort( int [] a, int[] temp,int first,int last) { if(first<last){ int center=first+last/2; mergeSort(a,temp,first,center); mergeSort(a,temp,center+1,last) merge(a,temp,first,center+1,last); }

För utveckling av verksamhet, produkter och livskvalitet. Quicksort Divide and conquer algoritm med flera variationer Bättre i medelfall än övriga algoritmer Dålig i värsta fall, som dock händer nästan aldrig Idé: Välj ut ett element (pivot) och se till att det hamnar på rätt plats genom att först flytta om övriga element så att alla som är mindre än pivotelementet hamnar till vänster och alla större hamnar till höger. Upprepa sedan (rekursivt) på vänster och höger delar av arrayen

För utveckling av verksamhet, produkter och livskvalitet. QuickSort- implementationsskiss <=pivotpivot>=pivot quickSort( a, first, last) { if(first<last) // välj pivot // dela arrayen quickSort(a,first,pivotindex-1) // sortera mindre quickSort(a,pivotindex+1,last) // sortera större }

För utveckling av verksamhet, produkter och livskvalitet. QuickSort() Median av tre ->6

För utveckling av verksamhet, produkter och livskvalitet. QuickSort()

För utveckling av verksamhet, produkter och livskvalitet. QuickSort()

För utveckling av verksamhet, produkter och livskvalitet. QuickSort()

För utveckling av verksamhet, produkter och livskvalitet. QuickSort()

För utveckling av verksamhet, produkter och livskvalitet. Quicksort med pivot == median av tre Antag vi skall sortera array a[low]..a[high]. Mittplatsen mid = (low + high) / 2. Utred storleksordningen mellan elementen a[low], a[high] och a[mid]. Byt samtidigt platser så att platsen low kommer att innehålla det minsta av dem, mid det mittersta i storleksordning och high det största. low mid high low mid high Pivotelementet = medianen av de tre

För utveckling av verksamhet, produkter och livskvalitet. Tidskomplexiteten? 1)Bästa fall (man kan bevisa) : Delar vektorn i lika stora delar i varje pass. O( n*log n ) 2)Sämsta fall: Vektorn delas alltid i en tom del och en del som består av alla element utom pivot. O(n2)

För utveckling av verksamhet, produkter och livskvalitet. Priority Queues and Heap Binär heap och prioritest köer

För utveckling av verksamhet, produkter och livskvalitet. Köer med prioritet, varför? Ett behov av olika prioritesnivåer. Flyg som skall landa och starta TCP/IP Stack ”Fast-lane”, för mycket viktig trafik Real-tid system Schemaläggning av processer

För utveckling av verksamhet, produkter och livskvalitet. Prioritets tilldellning Varje uppgift / objekt i kö innehåller också ett prioritet-nummer Vanligtviss positiva heltal Där största värde har minsta prioritet

För utveckling av verksamhet, produkter och livskvalitet. Mer om priority queues… Viktiga operationer Lägg till, nya objekt … med tilldelning av prioritet insert() Hitta, objektet med högst prioritet … den mista prioritet-nummer findMin() Ta bort, objektet med högst prioritet deleteMin() (put, get, remove) or (enqueue, peek, dequeue)

För utveckling av verksamhet, produkter och livskvalitet. Passande datastruktur? Snaba insert Helst konstant tid ! Snabba remove och sökning Helst konstant tid !

För utveckling av verksamhet, produkter och livskvalitet. Ordnad länkad-lista insert() konstant tid! findMin() Linjär tid… H H T T

För utveckling av verksamhet, produkter och livskvalitet. Sorterad länkad-lista insert() Linjär tid… findMin() Konstant tid! H H T T

För utveckling av verksamhet, produkter och livskvalitet. Binära träd insert() log N findMin() log N

För utveckling av verksamhet, produkter och livskvalitet. Binära Träd insert() log N findMin()/ findMax() log N

För utveckling av verksamhet, produkter och livskvalitet. Balancerade binära träd insert() log N findMin() log N Kräver ”hårt” arbete för balancering

För utveckling av verksamhet, produkter och livskvalitet. Kompromiss – Binary Heap Kombination mellan träd och array Strukturell egenskap Order egenskap, heap order

För utveckling av verksamhet, produkter och livskvalitet. Strukturell egenskap Implicit representation Representeras som ett komplett binär träd med array För ett objekt på array-position x: Left child på array-position 2x Rigth child på array-position 2x + 1 Parent at array-position x/ Root

För utveckling av verksamhet, produkter och livskvalitet. Order egenskap Heap-order För ett objekt X som har parent P gäller: X’s priority key has to be greater than P’s priority key Objektet med den minsta prioritets- nummer ( högst prioritet) finns alltid i rooten. Kallas MIN HEAP Konstant tid for findMin()! Omvända alternativ finns okcså MAXHEAP Konstant tid for findMAX()!

För utveckling av verksamhet, produkter och livskvalitet. Exempel – insert() Percolate up/ swim

För utveckling av verksamhet, produkter och livskvalitet. Exempel – Remove() Percolate down/ sink

För utveckling av verksamhet, produkter och livskvalitet. … Hur bra är den? insert() log N – värsta fall Konstant tid – medel fall deleteMin() log N – värsta fall och i medel fall

För utveckling av verksamhet, produkter och livskvalitet. Prioritets kö för sortering – Heapsort Använder max heap Heapsort 1.(Strukturerar data ) 2.Bygger heap 3.Använder deleteMax för att ta bort data O(N log N) (worst-case)

För utveckling av verksamhet, produkter och livskvalitet. Heapsort – Steg 1 Kopierara data till en max heap struktur ?

För utveckling av verksamhet, produkter och livskvalitet. Heapsort – Steg 2 Bygger heap Perculate down frrån alla föräldrar Börjar med sista

För utveckling av verksamhet, produkter och livskvalitet. Heapsort – Steg 3 Sortera med deleteMax

För utveckling av verksamhet, produkter och livskvalitet. Heapsort – Step 3 Sort with deleteMax

För utveckling av verksamhet, produkter och livskvalitet. Heapsort – Steg Sortera med deleteMax 5 5

För utveckling av verksamhet, produkter och livskvalitet. Heapsort – Steg 3 Sortera med deleteMax

För utveckling av verksamhet, produkter och livskvalitet Heapsort – Steg 3 Sortera med deleteMax 1 1

För utveckling av verksamhet, produkter och livskvalitet Heapsort – Steg 3 Sortera with deleteMax

För utveckling av verksamhet, produkter och livskvalitet Heapsort – Steg 3 Sortera med deleteMax

För utveckling av verksamhet, produkter och livskvalitet. Slutsats Priority Queues Unsorted linked-list Sorted linked-list Binary trees Binary heap Heap sort Fast! (O(N log N) worst-case)