ID1020: Mergesort. Dr. Jim Dowling kap 2.2. Slides adapted from Algoritms 4 th Edition, Sedgewick.
|
|
- Roland Arvidsson
- för 8 år sedan
- Visningar:
Transkript
1 ID1020: Mergesort Dr. Jim Dowling kap 2.2 Slides adapted from Algoritms 4 th Edition, Sedgewick.
2 Två klassiska algoritmer: mergesort och quicksort Nyckelkomponenter i världens IT-infrastruktur. - Vetenskapliga förståelse av deras egenskaper har möjliggjort deras utveckling i praktiska system. - Quicksort hedrad som en av dem top 10 algoritmer under 1900-talet. Mergesort.... Quicksort.... 2
3 Divide-and-Conquer algoritmer Principen Divide-and-Conquer (dela-och-härska) för algoritmkonstruktion: - Divide: dela upp problemet i mindre, oberoende, delproblem. Delproblem är av samma typ som ursprungsproblemet. Uppdelningen fortsätter sedan tills problemet är nerbrutet i många triviala delproblem. - Conquer: lös delproblemen rekursivt (eller direkt om trivialt). - Resultaten från delproblemen sätts sedan ihop till en lösning av ursprungsproblemet. Tidskomplexitet kan oftast beräknas genom analys av ett rekursionsrelation.
4 Mergesort
5 Mergesort Grundläggande metod. - Dela upp array:n i två halvor. - Sortera rekursivt både halvorna var för sig. - Sammanfoga både halvor. 5
6 Abstract in-place merge demo Mål. Givet två sorterade subarrayer a[lo] till a[mid] och a[mid+1] till a[hi], ersätt med sorterade subarray a[lo] till a[hi]. lo mid mid+1 hi a[] E E G M R A C E R T sorterad sorterad 6
7 Abstract in-place merge demo Mål. Givet två sorterade subarrayer a[lo] till a[mid] och a[mid+1] till a[hi], ersätt med sorterade subarray a[lo] till a[hi]. lo hi a[] A C E E E G M R R T sorterad 7
8 Merging: Java implementation private static void merge(comparable[] a, Comparable[] aux, int lo, int mid, int hi) { for (int k = lo; k <= hi; k++) { aux[k] = a[k]; int i = lo, j = mid+1; for (int k = lo; k <= hi; k++) { if (i > mid) a[k] = aux[j++]; else if (j > hi) a[k] = aux[i++]; else if (less(aux[j], aux[i])) a[k] = aux[j++]; else a[k] = aux[i++]; copy merge aux[] lo i mid j hi A G L O R H I M S T a[] A G H I L M k 9
9 Mergesort: Java implementation public class Merge { private static void merge(...) { /* as before */ private static void sort(comparable[] a, Comparable[] aux, int lo, int hi) { if (hi <= lo) return; int mid = lo + (hi - lo) / 2; sort(a, aux, lo, mid); sort(a, aux, mid+1, hi); merge(a, aux, lo, mid, hi); public static void sort(comparable[] a) { Comparable[] aux = new Comparable[a.length]; sort(a, aux, 0, a.length - 1); lo mid hi
10 Mergesort: trace resultat efter ett rekursivt anrop 13
11 Mergesort: animation 50 i slumpordning algoritm position sorterade nuvarande subarray inte sorterade ännu 14
12 Mergesort: animation 50 omvänd-sorterade poster algoritm position sorterade nuvarande subarray inte sorterade ännu 15
13 Mergesort: empirisk analys Uppskattade körtider: - En laptop exekverar 10 8 jämförelser/sekund. - En superdator exekverar jämförelser/sekund. insertion sort (N 2 ) mergesort (N log N) computer thousand million billion thousand million billion home instant 2.8 hours 317 years instant 1 second 18 min super instant 1 second 1 week instant instant instant Slutsats. Bra algoritmer är bättre än superdatorer. 16
14 Mergesort: antalet jämförelser Sats. Mergesort jämför N lg N för att sortera en array av längd N. Bevis. Antalet jämförelser C (N) för att köra mergesort på en array av längd N satisfierar rekurrensrelationen: C (N) C ( N / 2 ) + C ( N / 2 ) + N där N > 1, med C (1) = 0. vänstra hälften högre hälften sammanfogning (merge) A (N) A( N / 2 ) + A ( N / 2 ) + 6N där N > 1, med A(1) = 0. Vi löser rekurrensrelationen när N är en tvåpotens: D (N) = 2 D (N / 2) + N, för N > 1, med D (1) = 0. Resultat gäller för alla N (men analys är lättare i det här fallet) 17
15 Divide-och-conquer rekurrens: bevis mha bilder Sats. IF D (N) satisfierar D (N) = 2 D (N / 2) + N för N > 1, med D (1) = 0, THEN D (N) = N lg N. Bevis 1. [antar att N är en tvåpotens] D (N) N = N D (N / 2) D (N / 2) 2 (N/2) = N lg N D(N / 4) D(N / 4) D(N / 4) D(N / 4) 4 (N/4) = N D(N / 8) D(N / 8) D(N / 8) D(N / 8) D(N / 8) D(N / 8) D(N / 8) D(N / 8) 8 (N/8) = N T(N) = N lg N 18
16 Divide-och-conquer rekurrens: induktionsbevis Sats. IF D (N) satisfierar D (N) = 2 D (N / 2) + N för N > 1, med D (1) = 0, THEN D (N) = N lg N. Bevis 2. [antar att N är en tvåpotens] - Basfal: N = 1. - Induktionssteget: D (N) = N lg N. - Mål: bevisa att D (2N) = (2N) lg (2N). D (2N) = 2 D (N) + 2N = 2 N lg N + 2N = 2 N (lg (2N) 1) + 2N = 2 N lg (2N) given inductive hypothesis algebra QED 20
17 Mergesort: antal array accesser Sats. Mergesort accesser array:n 6 N lg N gånger för att sortera en array av längd N. Bevis. Antalet array accesser A (N) satisfierar rekurrens-relationen: A (N) A ( N / 2 ) + A ( N / 2 ) + 6 N för N > 1, med A (1) = 0 Viktig punkt. Alla algoritmer med följande struktur tar N log N tid: public static void linearithmic(int N) { if (N == 0) { return; linearithmic(n/2); linearithmic(n/2); linear(n); lös två problem av halva storleken gör en linjär mängd arbete Kända undantag. FFT, m.m., 21
18 Mergesort analys: minneskomplexitet Sats. Mergesort använder extra minne proportionellt mot N. Bevis. The array aux[] needs to be of length N for the last merge. två sorterade subarrayer A C D G H I M N U V A B C D E F G H I J B E F J O P Q R S T M N O P Q R S T U V merged result Def. En sorteringsalgoritm är in-place om den använder c log N extra minne. T.ex. Insertion sort, selection sort, shellsort. Utmaning 1 (inte svårt). Använd aux[] array av längd ~ ½ N istället för N. Utmaning 2 (jätte svårt). In-place merge. [Kronrod 1969] 22
19 Mergesort: förbättringar Använd insertion sort för små subarrayer. - Mergesort har för mycket overhead för mycket små subarrayer. - Brytpunkt (cutoff) under 10 poster använd insertion sort. private static void sort(comparable[] a, Comparable[] aux, int lo, int hi){ if (hi <= lo + CUTOFF - 1) { Insertion.sort(a, lo, hi); return; int mid = lo + (hi - lo) / 2; sort (a, aux, lo, mid); sort (a, aux, mid+1, hi); merge(a, aux, lo, mid, hi); 23
20 Mergesort brytpunkt till insertion sort: visualisering 24
21 Mergesort: förbättringar Sluta om redan sorterad. - Om största posten i första hälften minsta posten i andra hälften? - Det hjälper för delvis ordnande arrayer. A B C D E F G H I J A B C D E F G H I J M N O P Q R S T U V M N O P Q R S T U V private static void sort(comparable[] a, Comparable[] aux, int lo, int hi) { if (hi <= lo) return; int mid = lo + (hi - lo) / 2; sort (a, aux, lo, mid); sort (a, aux, mid+1, hi); if (!less(a[mid+1], a[mid])) return; merge(a, aux, lo, mid, hi); 25
22 Mergesort: förbättringar Eliminera kopiering till auxiliary array:n. Spara tid (men inte minne) genom att byta rollen av input och auxiliary array:n under varje rekursivanrop. private static void merge(comparable[] a, Comparable[] aux, int lo, int mid, int hi) { int i = lo, j = mid+1; for (int k = lo; k <= hi; k++) { if (i > mid) aux[k] = a[j++]; else if (j > hi) aux[k] = a[i++]; else if (less(a[j], a[i])) aux[k] = a[j++]; else aux[k] = a[i++]; private static void sort(comparable[] a, Comparable[] aux, int lo, int hi) { if (hi <= lo) return; int mid = lo + (hi - lo) / 2; sort (aux, a, lo, mid); sort (aux, a, mid+1, hi); merge(a, aux, lo, mid, hi); switch roles of aux[] och a[] assumes aux[] is initialized to a[] once, before recursive calls merge from a[] to aux[] 26
23 Java 6 systemsort Grundläggande algoritm för sortering av objekt = mergesort. - Brytpunkten (cutoff) till insertion sort = 7. - Sluta om redan sorterad test. - Eliminera kopiering till auxillary array knep. Arrays.sort(a) 27
24 Bottom-up Mergesort
25 Bottom-up mergesort Grundläggande metod. - Pass-through array, samanfogar subarrayer av storlek 1. - Upprepa för subarrayer av storlek 2, 4, 8,... 29
26 Bottom-up mergesort: Java implementation public class MergeBU { private static void merge(...) { /* as before */ public static void sort(comparable[] a) { int N = a.length; Comparable[] aux = new Comparable[N]; for (int sz = 1; sz < N; sz = sz+sz) for (int lo = 0; lo < N-sz; lo += sz+sz) merge(a, aux, lo, lo+sz-1, Math.min(lo+sz+sz-1, N-1)); ungefär 10% långsammare än rekursiv, top-down mergesort på vanliga system Slutsats. Enkel och icke-rekursiv version av mergesort. 30
27 Mergesort: visualisering top-down mergesort (cutoff = 12) bottom-up mergesort (cutoff = 12) 31
28 Tidskomplexitet av mergesort
29 Tidskomplexitet för sortering Kostnadsmodell. Antal operationer. Övre gräns. Kostnadsgaranti av någon algoritm för X. Lägre gräns. Ingen algoritm för X har en kostnad lägre än gränsen. Optimal algoritm. Algoritm med bäst möjliga kostnadsgaranti för X. lägre gräns ~ övre gräns Exempel: sortering. - beräkningsmodellen: beslutsträd. - kostnadsmodell: # jämförelser. - Övre gräns: ~ N lg N från mergesort. - Lägre gräns :? - Optimal algoritm:? kan bara accessa information genom jämförelser (t.ex., Java Comparable framework) 33
30 Beslutsträd (för 3 unika nycklar a, b, och c) yes a < b kod mellan jämförelser (t.ex, sekvens av utbyte) no djupet av trädet = worst-case antal jämförelser b < c a < c yes no yes no a b c a < c b a c b < c yes no yes no a c b c a b b c a c b a varje löv motsvarar en (och bara en) ordning, minst en löv för varje möjliga ordning. 34
31 Jämförelese-baserad lägre gräns för sortering Sats. Alla jämför-baserade sorteringsalgoritmer måste jämföra minst lg ( N! ) ~ N lg N gånger i worst-case (värsta fall). Bevis. - Vi antar att array:n bestå av N unika värde a1 till an. - Worst case bestämmas av djupet (height) h av beslutsträdet. - Binärträdet av djupet h har som mest 2 h löv. - N! olika ordningar minst N! löv. 35
32 Jämförelse-baserade lägre gräns för sortering Sats. Alla jämförelse-baserade sorteringsalgoritmer måste jämföra minst lg ( N! ) ~ N lg N gånger i worst-case. Bevis. - Vi antar att array:n bestå av N unika värde a1 till an. - Worst case bestämmas av djupet (height) h av beslutsträdet. - Binärträdet av djupet h har som mest 2 h löv. - N! olika ordningar minst N! löv. 2 h # löv N! h lg ( N! ) ~ N lg N Stirlings formel 36
33 Tidskomplexitet för sortering Kostnadsmodell. Antal operationer. Övre gräns. Kostnadsgaranti av någon algoritm för X. Lägre gräns. Ingen algoritm för X har en kostnad lägre än gränsen. Optimal algoritm. Algoritm med bäst möjliga kostnadsgaranti för X. Exempel: sortering. - beräkningsmodellen: beslutsträd. - kostnadsmodell: # jämförelser. - Övre gräns: ~ N lg N från mergesort. - Lägre gräns : ~ N lg N. - Optimal algoritm = mergesort. Första mål av algoritm design: optimal algoritms. 37
34 Komplexitet resulterar i kontext Jämförelser? Mergesort är optimalt med avseende på antal jämförelser. Space? Mergesort är inte optimalt med avseende på hur mycket minnet den använder (minneskomplexitet). Läxan. Teori hjälper oss hitta bättre lösningar. T.ex. Kan man designa en sorteringsalgoritm som garanterar ½ N lg N jämförelser? T.ex. Kan man designa en sorteringsalgoritm som är optimalt, med avseende på både tid- och minnes-komplexitet? 38
35 Beräkningskomplexit resultaten i kontext (fort.) Lägre gräns kan sänkas vidare om algoritmen kan utnyttja: - Första ordningen av input (indatan). T.ex.: insertion sort behöver bara ett linjärt antal jämförelser på delvis sorterade arrayer. - Distributionen av värden av nycklarna. T.ex. : 3-way quicksort behöver bara ett linjär antal jämförelser på arrayer när antalet unika nycklar är konstant. [nästa föreläsningen] - Representationen av nycklarna. T.ex. : radix sort behöver inga nyckeljämförelser den accessar data med hjälp av karaktär/tal jämförelser. 39
36 Mergesort komparatorer
37 Sortera länder efter guldmedaljer
38 Sortera länder efter totalt antal medaljer
39 Sortera ett musikbibliotek efter artistnamn
40 Sortera ett musikbibliotek efter låtnamn
41 Comparable interface: repris Comparable interface: sortera med natural order av en typ. public class Date implements Comparable<Date> { private final int month, day, year; public Date(int m, int d, int y) { month = m; day = d; year = y; public int compareto(date that) { if (this.year < that.year ) return -1; if (this.year > that.year ) return +1; if (this.month < that.month) return -1; if (this.month > that.month) return +1; if (this.day < that.day ) return -1; if (this.day > that.day ) return +1; return 0; natural order 47
42 Comparator interface Comparator interface: sortera med en alternativ ordning. public interface Comparator<Key> int compare(key v, Key w) jämför nycklar v och w Krav. Måste definiera en totalordning. string order Exempel natural order case insensitive Now is the time is Now the time pre-1994 order for digraphs ch och ll och rr Spanish language café cafetero cuarto churro nube ñoño British phone book McKinley Mackintosh 48
43 Frikoppla (decouple) comparator interface från datatypen Använd med Java system sort: - Skapa ett Comparator objekt. - Skicka som andra argument till Arrays.sort(). använder en alternativ ordning definierade String[] a; uses natural order av Comparator<String> objekt... Arrays.sort(a);... Arrays.sort(a, String.CASE_INSENSITIVE_ORDER);... Arrays.sort(a, Collator.getInstance(new Locale("es")));... Arrays.sort(a, new BritishPhoneBookOrder());... Slutsats. Frikoppla definitionen av datatypen från definitionen av vad det betyder att jämföra objekt av samma typ. 49
44 Comparator interface: att använda sorteringsbibliotek från boken För att använda comparators i bokens sorteringsimplementationer: - Använd Object istället för Comparable. - Skicka Comparator till sort() och less() och använd den i less(). insertion sort med en Comparator public static void sort(object[] a, Comparator comparator) { int N = a.length; for (int i = 0; i < N; i++) for (int j = i; j > 0 && less(comparator, a[j], a[j-1]); j--) exch(a, j, j-1); private static boolean less(comparator c, Object v, Object w) { return c.compare(v, w) < 0; private static void exch(object[] a, int i, int j){ Object swap = a[i]; a[i] = a[j]; a[j] = swap; 50
45 Att implementera en Comparator interface Att implementera en comparator: - Definiera en (nested) klass som implementerar Comparator interface:n. - Implementera compare() metoden. public class Student { private final String name; private final int section;... public static class ByName implements Comparator<Student> { public int compare(student v, Student w) { return v.name.compareto(w.name); public static class BySection implements Comparator<Student> { public int compare(student v, Student w) { return v.section - w.section; 51
46 Att implementera en Comparator interface Att implementera en comparator: - Definiera en (nested) klass som implementerar Comparator interface:n. - Implementera compare() metoden. Arrays.sort(a, new Student.ByName()); Arrays.sort(a, new Student.BySection()); Andrews 3 A Little Battle 4 C Whitman Chen 3 A Blair Fox 3 A Dickinson Furia 1 A Brown Gazsi 4 B Brown Kanaga 3 B Brown Rohde 2 A Forbes Furia 1 A Brown Rohde 2 A Forbes Andrews 3 A Little Chen 3 A Blair Fox 3 A Dickinson Kanaga 3 B Brown Battle 4 C Whitman Gazsi 4 B Brown 52
47 Att implementera en Comparator interface Att implementera en comparator: - Definiera en (nested) klass som implementerar Comparator interface:n. - Implementera compare() metoden. public class Student { public static final Comparator<Student> BY_NAME = new ByName(); public static final Comparator<Student> BY_SECTION = new BySection(); private final String name; private final int section;... public static class ByName implements Comparator<Student> { public int compare(student v, Student w) { return v.name.compareto(w.name); public static class BySection implements Comparator<Student> { public int compare(student v, Student w) { return v.section - w.section; 53
48 Mergesort stabilitet
49 Stabilitet En vanlig applikation. Först, sortera efter namn; sedan sortera efter Section. Selection.sort(a, new Student.ByName()); Selection.sort(a, new Student.BySection()); Andrews 3 A Little Battle 4 C Whitman Chen 3 A Blair Fox 3 A Dickinson Furia 1 A Brown Gazsi 4 B Brown Kanaga 3 B Brown Rohde 2 A Forbes Furia 1 A Brown Rohde 2 A Forbes Chen 3 A Blair Fox 3 A Dickinson Andrews 3 A Little Kanaga 3 B Brown Gazsi 4 B Brown Battle 4 C Studenter i section 3 inte längre sorterad efter namn. En stabil sortering behåller den relativa ordningen av poster med samma nycklar.
50 Stabilitet Vilka sorteringsalgoritmer är stabila? Vi behöver kontrollera algoritmen (och implementationen) för att se om den är stabil eller inte. 57
51 Stabilitet: insertion sort Sats. Insertion sort är stabil. public class Insertion { public static void sort(comparable[] a) { int N = a.length; for (int i = 0; i < N; i++) for (int j = i; j > 0 && less(a[j], a[j-1]); j--) exch(a, j, j-1); i j B1 A1 A2 A3 B2 Bevis. Om två poster är lika, insertion sort aldrig flyttar en av posterna förbi den andra. 1 0 A1 B1 A2 A3 B2 2 1 A1 A2 B1 A3 B2 3 2 A1 A2 A3 B1 B2 4 4 A1 A2 A3 B1 B2 A1 A2 A3 B1 B2 58
52 Stabilitet: selection sort Sats. Selection sort är inte stabil. public class Selection { public static void sort(comparable[] a) { int N = a.length; for (int i = 0; i < N; i++) { int min = i; for (int j = i+1; j < N; j++) if (less(a[j], a[min])) min = j; exch(a, i, min); i min B1 B2 A 1 1 A B2 B1 2 2 A B2 B1 A B2 B1 Bevis genom motexempel. Lång-avstånd swapping kan flytta en post förbi en annan med samma värde. 59
53 Stabilitet: shellsort Sats. Shellsort sort är inte stabil. public class Shell { public static void sort(comparable[] a) { int N = a.length; int h = 1; while (h < N/3) h = 3*h + 1; while (h >= 1) { for (int i = h; i < N; i++) { for (int j = i; j > h && less(a[j], a[j-h]); j -= h) exch(a, j, j-h); h = h/3; h B1 B2 B3 B4 A1 4 A1 B2 B3 B4 B1 1 A1 B2 B3 B4 B1 A1 B2 B3 B4 B1 Bevis genom motexempel. Lång-avstånd swapping kan flytta en post förbi en annan med samma värde. 60
54 Stabilitet: mergesort Sats. Mergesort är stabil. public class Merge { private static void merge(...) { /* as before */ private static void sort(comparable[] a, Comparable[] aux, int lo, int hi) { if (hi <= lo) return; int mid = lo + (hi - lo) / 2; sort(a, aux, lo, mid); sort(a, aux, mid+1, hi); merge(a, aux, lo, mid, hi); public static void sort(comparable[] a) { /* as before */ Bevis. Det räcker att verifiera att sammanfogning-operationen är stabil. 61
55 Stabilitet: mergesort Sats. Sammanfogning operationen är stabil. private static void merge(...) { for (int k = lo; k <= hi; k++) aux[k] = a[k]; int i = lo, j = mid+1; for (int k = lo; k <= hi; k++) { if (i > mid) a[k] = aux[j++]; else if (j > hi) a[k] = aux[i++]; else if (less(aux[j], aux[i])) a[k] = aux[j++]; else a[k] = aux[i++]; A1 A2 A3 B D A4 A5 C E F G Bevis. Tar från vänstra subarray:n om nycklarna är lika. 62
56 Sortering sammanfattning inplace? stable? best average worst remarks selection ½ N 2 ½ N 2 ½ N 2 N exchanges insertion N ¼ N 2 ½ N 2 use for small N or partially ordered shell N log3 N? c N 3/2 tight code; subquadratic mergesort ½ N lg N N lg N N lg N N log N guarantee; stable? N N lg N N lg N holy sorting grail 63
ID1020: Quicksort. Dr. Jim Dowling jdowling@kth.se. kap 2.3. Slides adapted from Algoritms 4 th Edition, Sedgewick.
ID1020: Quicksort Dr. Jim Dowling jdowling@kth.se kap 2.3 Slides adapted from Algoritms 4 th Edition, Sedgewick. Quicksort Grundläggande metod. - Blanda array:n. - Partitioner så att för något värde j
ID1020:Enkel Sortering
ID1020:Enkel Sortering Dr. Jim Dowling jdowling@kth.se kap 2.1 Slides adapted from Algorithms 4 th Edition, Sedgewick. Ett sorteringsproblem T.ex. Student poster på ett universitet. Chen 3 A 991-878-4944
Föreläsning 11 Datastrukturer (DAT037)
Föreläsning 11 Datastrukturer (DAT037) Fredrik Lindblad 1 4 december 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
Magnus Nielsen, IDA, Linköpings universitet
Föreläsning 7 Introduktion till sortering TDDC91,TDDE22,725G97: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 24 september 2018 Magnus Nielsen, IDA, Linköpings universitet 7.1 1
Föreläsning 11 Innehåll
Föreläsning 11 Innehåll Sortering O(n 2 )-algoritmer: urvalssortering insättningssortering O(n log n)-algoritmer: Mergesort Quicksort Heapsort behandlades i samband med prioritetsköer. Undervisningsmoment:
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Sortering Selectionsort, Bubblesort,
Sökning och sortering
Sökning och sortering Programmering för språkteknologer 2 Sara Stymne 2013-09-16 Idag Sökning Analys av algoritmer komplexitet Sortering Vad är sökning? Sökning innebär att hitta ett värde i en samling
Föreläsning 12 Innehåll
Föreläsning 12 Innehåll Sortering O(n 2 )-algoritmer: urvalssortering insättningssortering O(n log n)-algoritmer: Mergesort Quicksort Datavetenskap (LTH) Föreläsning 12 HT 2017 1 / 38 Sortering Varför
Tommy Färnqvist, IDA, Linköpings universitet
Föreläsning 8 Sortering och urval TDDC70/91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 1 oktober 2013 Tommy Färnqvist, IDA, Linköpings universitet 8.1 Innehåll Innehåll 1 Sortering
Föreläsning 9. Sortering
Föreläsning 9 Sortering Föreläsning 9 Sortering Sortering och Java API Urvalssortering Instickssortering Söndra och härska Shellsort Mergesort Heapsort Quicksort Bucketsort Radixsort Läsanvisningar och
Föreläsning 12 Innehåll
Föreläsning 12 Innehåll Sortering O(n 2 )-algoritmer: urvalssortering insättningssortering O(n log n)-algoritmer: Mergesort Quicksort Datavetenskap (LTH) Föreläsning 12 VT 2018 1 / 40 Sortering Varför
Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2
Objektorienterad programmering E Algoritmer Linjär sökning Binär sökning Tidsuppskattningar Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk; dess syntax och semantik, bibliotek
Föreläsning 11 Innehåll. Sortering. Sortering i Java. Sortering i Java Comparable. Sortering. O(n 2 )-algoritmer: urvalssortering insättningssortering
Föreläsning 11 Innehåll Sortering O(n 2 )-algoritmer: urvalsering insättningsering O(n log n)-algoritmer: Merge Quick Heap behandlades i samband med prioritetsköer. Undervisningsmoment: föreläsning 11,
Sortering. Föreläsning 12 Innehåll. Sortering i Java. Sortering i Java Exempel. Sortering
Föreläsning 12 Innehåll Sortering Sortering O(n 2 )-algoritmer: urvalsering insättningsering O(n log n)-algoritmer: Merge Quick Varför era? För att göra sökning effektivare. För att förenkla vissa algoritmer.
Föreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet
Datastrukturer D. Föreläsning 2
Datastrukturer D Föreläsning 2 Jämförelse mellan olika sorteringsalgoritmer n Selection sort T(n) Insertion sort T(n) 2 1 1 1 Merge sort T(n) 4 6 3-6 4-5 8 28 7-28 12-17 16 120 15-120 32-49 Analysis of
Algoritmer. Två gränssnitt
Objektorienterad programmering E Algoritmer Sökning Linjär sökning Binär sökning Tidsuppskattningar Sortering Insättningssortering Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk;
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Lägre gräns för sortering Count sort,
Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016
Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016 Algoritmanalys Inledning Exempel 1: x n När vi talade om rekursion presenterade vi två olika sätt att beräkna x n, ett iterativt: x n =
Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10
Objektorienterad programmering E Föreläsning 10 Rekursion Länkade datastrukturer Back to Basics Exekvera programmet för hand! public class Param { public static int f(int x) { return x+1; public static
Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna
Föreläsning Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Implementering med lista ar Implementering av prioritetskö med heap Sortering
Föreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9
Quicksort Koffman & Wolfgang kapitel 8, avsnitt 9 1 Quicksort Quicksort väljer ett spcifikt värde (kallat pivot), och delar upp resten av fältet i två delar: alla element som är pivot läggs i vänstra delen
TDDI16 Datastrukturer och algoritmer. Algoritmanalys
TDDI16 Datastrukturer och algoritmer Algoritmanalys 2017-08-28 2 Översikt Skäl för att analysera algoritmer Olika fall att tänka på Medelfall Bästa Värsta Metoder för analys 2017-08-28 3 Skäl till att
Sortering. Brute-force. Sortering Ordna element enligt relation mellan nyckelvärden
Sortering Brute-force Sortering Ordna element enligt relation mellan nyckelvärden Flera olika algoritmer med olika fördelar Brute-force Gå igenom alla permutationer och hitta den där elementen ligger i
Föreläsning 13. Rekursion
Föreläsning 13 Rekursion Rekursion En rekursiv metod är en metod som anropar sig själv. Rekursion används som alternativ till iteration. Det finns programspråk som stödjer - enbart iteration (FORTRAN)
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Bubblesort, Shakersort, Mergesort Strömmar,
Seminarium 13 Innehåll
Seminarium 13 Innehåll Prioritetsköer och heapar Prioritetsköer ADTn Klassen PriorityQueue i java.util Implementering med lista Heapar ADTn För implementering av prioritetskö För sortering Efter seminariet
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Prioritetskö Heap Representation som
Kapitel 7: Analys av sorteringsalgoritmer
Kapitel 7: Analys av sorteringsalgoritmer Kapitel 7 i Weiss bok handlar om problemet med att sortera en räcka av element vi skall analysera körtiderna för några av sorteringsalgoritmerna vi bevisar också
Programmering för språkteknologer II, HT2014. Rum
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Sökalgoritmer
Föreläsning 5 Innehåll
Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur
F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander
F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt
Sortering. Intern/ extern? Antaganden. Vad kan vi kräva? Rank sort. Rank sort. På en nod/ distribuerad? Jämförelsebaserad/ icke jämförelsebaserad?
Sortering Föreläsning : Sorteringsalgoritmer Sortering: att ordna data i någon sekventiell ordning Sortering förekommer som del i många applikationer Kanonisk form för sorterat data? Skall den sorterade
Datastrukturer. föreläsning 2
Datastrukturer föreläsning 2 1 De som vill ha en labkamrat möts här framme i pausen Övningsgrupper: efternamn som börjar på A-J: EC, Arnar Birgisson K-Ö: ED, Staffan Björnesjö 2 Förra gången Vi jämförde
Algoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 4 oktober 2017 1 Idag Algoritmkonstruktion (lite blandat) Redovisning och inlämning av labbteori 3 2 Uppgifter Uppgift
Algoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 9 oktober 2015 Anton Grensjö ADK Övning 6 9 oktober 2015 1 / 23 Översikt Kursplanering Ö5: Grafalgoritmer och undre
Föreläsning 13 Datastrukturer (DAT037)
Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-12-14 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Sammanfattning
SORTERING OCH SÖKNING
Algoritmer och Datastrukturer Kary FRÄMLING Kap. 9, Sid 1 C-språket 2/Kary Främling v2000 och Göran Pulkkis v2003 SORTERING OCH SÖKNING Sortering är ett av de bästa exemplen på problem där valet av lösningsalgoritm
Rekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas 22 januari 2006 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av problem som
Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.
Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera
Föreläsning 13 Datastrukturer (DAT037)
Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 11 december 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
Tentamen Datastrukturer D DAT 036/INN960
Tentamen Datastrukturer D DAT 036/INN960 18 december 2009 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 = 48 p, GU:
Föreläsning 12: Exempel och problemlösning
TDA 545: Objektorienterad programmering Föreläsning 12: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Problemlösning, dvs hur man ska tänka för att hitta lösning int mängd/set
Föreläsning Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-16 Idag Mängder, avbildningar. Hashtabeller. Sortering. Pseudokod Blandning av programmeringsspråk, matematisk notation och naturligt
Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:
Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp
Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.
Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer
ID1020: Union-Find. Dr. Jim Dowling jdowling@kth.se. kap. 1.5. Slides adapted from Algorithms 4 th Edition, Sedgewick.
ID1020: Union-Find Dr. Jim Dowling jdowling@kth.se kap. 1.5 Slides adapted from Algorithms 4 th Edition, Sedgewick. Att utvecka en algoritm Stegen för att utveckla en användbar algoritm: - Bygg en modell
ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar
Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp
Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem
Översikt Stegvis förfining Pseudokod Flödesdiagram Dekomposition KISS-regeln Procedurell dekomposition DRY-regeln Algoritmer Sortering och sökning Stegvis förfining Metod för att skapa ett program från
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Omega, Theta Selectionsort, Shellsort,
Medan ni väntar. 2. Skriv metoden. 3. Skriv metoden. Naturligtvis rekursivt och utan användning av Javas standardmetoder.
(10 september 2018 T02 1 ) Medan ni väntar 1. Binär sökning i sorterad array med n element kräver log 2 n försök. Hur många försök krävs i en array med 10 3, 10 6 respektive 10 9 element? 2. Skriv metoden
Tentamen Datastrukturer D DAT 036/INN960
Tentamen Datastrukturer D DAT 036/INN960 18 december 2009 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 = 48 p, GU:
Föreläsning 9 Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT07) Fredrik Lindblad 27 november 207 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/20/course/dat07 Innehåll 2
ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar
Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap
FÖRELÄSNING 12 DATALOGI I
Föreläsning 12 2I1027 1 FÖRELÄSNING 12 DATALOGI I Sortering Beatrice Åkerblom beatrice@dsv.su.se Institutionen för Data- och Systemvetenskap SU/KTH Föreläsning 12 2I1027 2 Läsanvisningar Michael Main Data
Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.
Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera
Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek
Föreläsning 5 Innehåll Val av algoritm och datastruktur Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Det räcker inte med att en algoritm är korrekt
Tentamen i Algoritmer & Datastrukturer i Java
Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:
Föreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra
Föreläsning 6 Innehåll. Rekursion. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursiv problemlösning. Rekursion. Rekursivt tänkande:
Föreläsning 6 Innehåll Rekursion Begreppet rekursion Rekursiv problemlösning Samband mellan rekursion och induktion Söndra-och-härska-algoritmer Dynamisk programmering Undervisningsmoment: föreläsning
Tentamen Datastrukturer D DAT 036/DIT960
Tentamen Datastrukturer D DAT 036/DIT960 17 december 2010 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 0736-341480 eller ankn 1035 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 =
Föreläsning 1, vecka 7: Rekursion
TDA 548: Grundläggande Programvaruutveckling Föreläsning 1, vecka 7: Rekursion Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Nytt: Extra labbtillfälle för Grupp B (för att grupp Bs labbtider har på senaste
Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet
Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig
Föreläsning 8 Innehåll
Föreläsning 8 Innehåll Orientering om samarbete om Eclipse-projekt med git Orientering om konstruktion av användargränssnitt i Android Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering
Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet
Föreläsning 5 Innehåll Algoritmer och effektivitet Algoritmer och effektivitet Att bedöma, mäta och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Undervisningsmoment: föreläsning 5, övningsuppgifter
Tentamen: Programutveckling ht 2015
Tentamen: Programutveckling ht 2015 Datum: 2015-11-04 Tid: 09:00-13:00 Sal: Ansvarig: Resultat: Hjälpmedel: Maxpoäng: Betygsgränser: Anslås inom 3 veckor. Inga 40 p 20 p för G, 32 p för VG. Iakttag följande:
Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?
Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket
Föreläsning 1 Datastrukturer (DAT037)
Föreläsning 1 Datastrukturer (DAT037) Fredrik Lindblad 1 30 oktober 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
Föreläsning 8: Exempel och problemlösning
TDA 545: Objektorienterad programmering Föreläsning 8: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 De tre senaste föreläsningarna Läsanvisning: kap 2 & 13 meddelanden och
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Föreläsning Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-12-14 Idag Frågor? Är något oklart inför tentan? Sammanfattning Exempel från föreläsning 1 Dåligt val av datastruktur public class Bits {
Programmering för språkteknologer II. OH-serie: Sökning och sortering. Algoritm
Programmering för språkteknologer II OH-serie: Sökning och sortering Mats Dahllöf Sökning och sortering Sökning: lokalisera objekt i samlingar. Finns ett visst värde? I så fall: var? Sortering: placera
Föreläsning 5. Rekursion
Föreläsning 5 Rekursion Föreläsning 5 Algoritm Rekursion Rekursionsträd Funktionsanrop på stacken Binär sökning Problemlösning (möjliga vägar) Algoritm En algoritm är ett begränsat antal instruktioner/steg
TDDC Terminologi Uppdaterad Fö #1
Det här dokumentet ska inte ses som en uttömmande förklaring av varje term, utan snarare som en snabb påminnelse om vad varje enskild term betydde. För en mer noggrann beskrivning, se kursmaterialet eller
Föreläsning 11: Rekursion
TDA 545: Objektorienterad programmering Föreläsning 11: Rekursion Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Läsanvisning: kap 19, men bara t.o.m. sida 812 rekursion fakulteten exponentiering
Föreläsning 3: Booleans, if, switch
TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt
Föreläsning 13 Innehåll
Föreläsning 13 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Heapar Implementering av prioritetskö med heap Klassen PriorityQueue i java.util Programexempel LPT-algoritmen
Tentamen i Algoritmer & Datastrukturer i Java
Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2010-03-16 Skrivtid: 4 timmar Kontaktperson: Nicolina Månsson Poäng / Betyg: Max 44 poäng
Vad har vi pratat om i kursen?
Vad har vi pratat om i kursen? Föreläsning 1 & 2 Systemminnet och systemstacken Rekursion Abstrakta datatyper Föreläsning 3 ADT:n Länkad lista Föreläsning 4 ADT:n Kö ADT:n Stack Föreläsning 5 Komplexitet
Lösningsförslag till exempeltenta 1
Lösningsförslag till exempeltenta 1 1 1. Beskriv hur binärsökning fungerar. Beskriv dess pseudokod och förklara så klart som möjligt hur den fungerar. 2 Uppgift 1 - Lösning Huvudidé: - Titta på datan i
Föreläsning 10 Innehåll
Föreläsning 10 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en
Tentamen Programmeringsteknik II 2017-10-23 Skrivtid: 14:00 19:00 Inledning Skrivningen innehåller ett antal bilagor: Bilagan listsandtrees innehåller fyra klasser: Klassen List med några grundläggande
Lösningsförslag för tentamen i Datastrukturer (DAT037) från
Lösningsförslag för tentamen i Datastrukturer (DAT7) från --9 Nils Anders Danielsson. Träd- och köoperationerna har alla tidskomplexiteten O(log s), där s är antalet element i trädet/kön (notera att jämförelser
13 Prioritetsköer, heapar
Prioritetsköer, heapar 31 13 Prioritetsköer, heapar U 101. En prioritetskö är en samling element där varje element har en prioritet (som används för att jämföra elementen med). Elementen plockas ut i prioritetsordning
Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'
Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Skrivtid: 08.30 13.30 Hjälpmedel: Inga Lärare: Betygsgränser DVA104' Akademin)för)innovation,)design)och)teknik) Onsdag)2014:01:15) Caroline
Tentamen Datastrukturer (DAT037)
Tentamen Datastrukturer (DAT07) Datum och tid för tentamen: 2016-01-09, 14:00 18:00. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 15:00 och ca
Föreläsning 1. Introduktion. Vad är en algoritm?
Några exempel på algoritmer. Föreläsning 1. Introduktion Vad är en algoritm? 1. Häll 1 dl havregryn och ett kryddmått salt i 2 1 2 dl kallt vatten. Koka upp och kocka gröten ca 3minuter. Rör om då och
Exempel: Förel Rekursion III Nr 14. Uno Holmer, Chalmers,
Exempel: Kappsäcksproblemet Backtracking Dynamisk programmering Föreläsning (Weiss kap..-) Kan man ur en grupp föremål F,,F N med vikterna V,,V N välja ut en delgrupp som väger exakt M kilo? Exempel: föremål
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Algoritmanalys Tidskomplexitet, Rumskomplexitet
TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (7) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi
Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition
Föreläsning Innehåll Diskutera Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
Rekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas 22 september 2015 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av problem
Föreläsning 9 Innehåll
Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon
Föreläsning ALGORITMER: SÖKNING, REGISTRERING, SORTERING
Föreläsning 11 12 ALGORITMER: SÖKNING, REGISTRERING, SORTERING Seminarier: Fredagsklubben för dig som tycker att programmering är svårt (0 eller möjligen 1 poäng på delmålskontrollen) inte avsedda för
Föreläsning 12. Söndra och härska
Föreläsning 12 Söndra och härska Föreläsning 12 Söndra och härska Maximal delsekvens Skyline Closest pair Växel Söndra och härska (Divide and conquer) Vi stötte på dessa algoritmer när vi tittade på sortering.
Datastrukturer och algoritmer
Datastrukturer och algoritmer Föreläsning 16 2 Innehåll Snabbrepetition Exempeltentamen Kursutvärdering Mina målsättningar Kursens mål: 3 Rolig och viktig kurs Bli en bättre programmerare och inse att
Lösning av några vanliga rekurrensekvationer
1 (8) Lösning av några vanliga rekurrensekvationer Rekursiv beräkning av X n En rekursiv funktion som beräknar x n genom upprepad multiplikation, baserat på potenslagarna X 0 = 1 X n+1 = X X n float pow(float
Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen
Datastrukturer och algoritmer Föreläsning 15 Inför tentamen 1 Innehåll Kursvärdering Vi behöver granskare! Repetition Genomgång av gammal tenta 2 Första föreläsningen: målsättningar Alla ska höja sig ett
Rekursion. Koffman & Wolfgang kapitel 5
Rekursion Koffman & Wolfgang kapitel 5 1 Rekursivt tänkande Rekursion reducerar ett problem till en eller flera enklare versioner av samma problem. med enklare menas att underproblemen måste vara mindre,