Sökning och sortering
|
|
- Lina Blomqvist
- för 6 år sedan
- Visningar:
Transkript
1 Sökning och sortering Programmering för språkteknologer 2 Sara Stymne
2 Idag Sökning Analys av algoritmer komplexitet Sortering
3 Vad är sökning? Sökning innebär att hitta ett värde i en samling av värden Vi kommer att fokusera på att hitta ett värde i en array Returvärden Om värdet finns: index för den plats där det finns Om värdet inte finns: -1
4 Vad är sökning? Sökning innebär att hitta ett värde i en samling av värden Vi kommer att fokusera på att hitta ett värde i en array Returvärden Om värdet finns: index för den plats där det finns Om värdet inte finns: -1 (omöjligt som index)
5 Vad är sökning? Sökning innebär att hitta ett värde i en samling av värden Vi kommer att fokusera på att hitta ett värde i en array Returvärden Om värdet finns: index för den plats där det finns Om värdet inte finns: -1 (omöjligt som index) Tillvägagångssätt beror på arrayen Osorterad Sorterad
6 Vad är sökning? Sökning innebär att hitta ett värde i en samling av värden Vi kommer att fokusera på att hitta ett värde i en array Returvärden Om värdet finns: index för den plats där det finns Om värdet inte finns: -1 (omöjligt som index) Tillvägagångssätt beror på arrayen Osorterad Linjär sökning Sorterad Binär sökning
7 Linjär sökning Hitta ett värde i en osorterad array Lösning: Loopa igenom arrayen tills vi hittar värdet, eller tills vi letat igenom hela arrayen om det inte finns
8 Linjär sökning Hitta ett värde i en osorterad array Lösning: Loopa igenom arrayen tills vi hittar värdet, eller tills vi letat igenom hela arrayen om det inte finns public static int linsearch(int[] arr, int target) { for (int i=0; i < arr.length; i++) { if (arr[i]==target) { return i; // first hit index } } return -1 }
9 Hur lång tid tar linjär sökning? Räkna tiden i antal jämförelser (==) som görs Baserat på arrayens storlek: n Hur lång tid tar sökningen: I bästa fall? I värsta fall? I genomsnitt?
10 Hur lång tid tar linjär sökning? Räkna tiden i antal jämförelser (==) som görs Baserat på arrayens storlek: n Hur lång tid tar sökningen: I bästa fall? 1 värdet finns först i arrayen I värsta fall? I genomsnitt?
11 Hur lång tid tar linjär sökning? Räkna tiden i antal jämförelser (==) som görs Baserat på arrayens storlek: n Hur lång tid tar sökningen: I bästa fall? 1 värdet finns först i arrayen I värsta fall? n värdet finns ej, alla positioner måste letas igenom I genomsnitt?
12 Hur lång tid tar linjär sökning? Räkna tiden i antal jämförelser (==) som görs Baserat på arrayens storlek: n Hur lång tid tar sökningen: I bästa fall? 1 värdet finns först i arrayen I värsta fall? n värdet finns ej, alla positioner måste letas igenom I genomsnitt? n/2 om vi bara letar efter värden som finns
13 Hur lång tid tar linjär sökning? Räkna tiden i antal jämförelser (==) som görs Baserat på arrayens storlek: n Hur lång tid tar sökningen: I bästa fall? 1 värdet finns först i arrayen I värsta fall? n värdet finns ej, alla positioner måste letas igenom I genomsnitt? n/2 om vi bara letar efter värden som finns n/2 < t < n om vi även letar efter värden som inte finns
14 Hur lång tid tar linjär sökning? Räkna tiden i antal jämförelser (==) som görs Baserat på arrayens storlek: n Hur lång tid tar sökningen: I bästa fall? 1 värdet finns först i arrayen I värsta fall? n värdet finns ej, alla positioner måste letas igenom I genomsnitt? n/2 om vi bara letar efter värden som finns n/2 < t < n om vi även letar efter värden som inte finns Beror även på fördelningen av värden i arrayen
15 Binär sökning Om arrayen är sorterad kan vi utnyttja det för snabbare sökning
16 Binär sökning Om arrayen är sorterad kan vi utnyttja det för snabbare sökning Leta i mitten först Om det är rätt värde, returnera Om värdet är mindre än mittenvärdet, leta i den undre delen Om värdet är mindre än mittenvärdet, leta i den övre delen Upprepa!
17 Binär sökning rekursiv public static int binsearch(int[] arr, int target) { return binsearch(arr,target,0,arr.length-1); } public static int binsearch(int[] arr, int target, int low, int high) { if (high < low) { return -1; } else { int mid = (low+high)/2; if (arr[mid] == target) { return mid; } else if (arr[mid] > target) { return binsearch(arr,target, low, mid-1); } else { // (arr[mid] < target) return binsearch(arr,target, mid+1, high); } } }
18 Rekursion Rekursiv funktion funktion som anropar sig själv En rekursiv funktion har två typer av fall: Basfall fall där lösningen är trivial Rekursiva fall fall där metoden anropar sig själv
19 Rekursion Rekursiv funktion funktion som anropar sig själv En rekursiv funktion har två typer av fall: Basfall fall där lösningen är trivial Binär sökning: -1 om svaret inte finns, samt korrekt index om vi hittat rätt värde Rekursiva fall fall där metoden anropar sig själv Binär sökning: sök vidare i ena halvan genom att anropa sig själv
20 Binär sökning iterativ public static int binsearch(int[] arr, int target) { return binsearch(arr,target,0,arr.length-1); } public static int binsearchlin(int[] arr, int target, int low, int high) { while (high >= low) { int mid = (low+high)/2; if (arr[mid] > target) { high = mid - 1; } else if (arr[mid] < target) { low = mid + 1; } else { //arr[low] == target return mid; } } return -1; }
21 Hur lång tid tar binär sökning? Räkna tiden i antal jämförelser (==) som görs Baserat på arrayen storlek: n Hur lång tid tar sökningen: I bästa fall? I värsta fall? I genomsnitt?
22 Hur lång tid tar binär sökning? Räkna tiden i antal jämförelser (==) som görs Baserat på arrayen storlek: n Hur lång tid tar sökningen: I bästa fall? 1 värdet finns först i arrayen I värsta fall? log n värdet finns ej I genomsnitt? 1 < t log n
23 Sökning jämförelse Linjär Binär Kan användas alltid för sorterad array För länkad lista ja nej Tid (värsta) n log n Implementering extremt lätt något krångligare
24 Sökning alternativ Linjär och binär sökning fungerar bra för arrayer Man kan dock använda alternativa datastrukturer för att underlätta sökning: Binära sökträd Alternativ datastruktur till array Hashtabeller Lookup ur en hashtabell är i regel snabbt
25 Algoritmer och datastrukturer Algoritm en systematisk procedur som i ett andligt antal steg anger hur man utför en beräkning eller löser ett givet problem (NE) En beskrivning av hur man löser ett problem Datastruktur En struktur som används för att lagra data, till exempel länkad lista, array, hashtabell
26 Algoritmer och datastrukturer Algoritm en systematisk procedur som i ett andligt antal steg anger hur man utför en beräkning eller löser ett givet problem (NE) En beskrivning av hur man löser ett problem Datastruktur En struktur som används för att lagra data, till exempel länkad lista, array, hashtabell Vilka algoritmer som är tillämpbara för ett problem beror delvis på vilken datastruktur som används
27 Analys av algoritmer Viktiga frågor att besvara om ett program/algoritm Ger den ett korrekt resultat? Ger den alltid lösning? (fastnar ej i oändlig loop, tex) Hur snabb är den? Hur mycket minne kräver den?
28 Analys av algoritmer Viktiga frågor att besvara om ett program/algoritm Ger den ett korrekt resultat? Ger den alltid lösning? (fastnar ej i oändlig loop, tex) Hur snabb är den? tidskomplexitet Hur mycket minne kräver den?
29 Tidskomplexitet Hur kan man avgöra vilken algoritm som är den snabbaste för att lösa ett ett problem?
30 Tidskomplexitet Hur kan man avgöra vilken algoritm som är den snabbaste för att lösa ett ett problem? Att mäta faktisk tid är opraktiskt olika datorer är olika effektiva till exempel
31 Tidskomplexitet Hur kan man avgöra vilken algoritm som är den snabbaste för att lösa ett ett problem? Att mäta faktisk tid är opraktiskt olika datorer är olika effektiva till exempel Använd asymptotisk analys tendensen på lång sikt
32 Asymptotisk analys Analys av hur tiden för en algoritm växer när storleken på indata växer Storlek? Array: antal element Sträng: antal tecken Allmänna fallet: ofta antal byte Vi kan diskutera olika fall Värsta Genomsnittliga Bästa
33 Asymptotisk analys Analys av hur tiden för en algoritm växer när storleken på indata växer Storlek? Array: antal element Sträng: antal tecken Allmänna fallet: ofta antal byte Vi kan diskutera olika fall Värsta Vanlig analys Genomsnittliga Görs ofta, men är ofta svårare Bästa Ofta inte så meningsfull
34 Asymptotisk analys Grundkrav: En algoritm ska fungera för indata av godtycklig storlek (n) Beräkna körtiden som en funktion av storleken på indata T (n) Ignorera konstanta faktorer Fokusera på dominerande faktorer vid stora indata
35 Asymptotisk analys Grundkrav: En algoritm ska fungera för indata av godtycklig storlek (n) Beräkna körtiden som en funktion av storleken på indata T (n) Ignorera konstanta faktorer Fokusera på dominerande faktorer vid stora indata Analysen ska vara maskinoberoende Kraftfulla maskiner ökar hastigheten med en konstant
36 Primitiva operationer En primitiv operation antas ta konstant tid: Tilldelning, ex. x = y; Aritmetiska operationer, ex. x+5; Jämförelser, ex. x < 5; Arrayindexeringar, ex. myarray[5]; Metodretur, ex. return 5;... Låt T(n) vara antalet primitiva operationer som en funktion av storleken på indata
37 Exempel multiplicera talen i en array public static int multiply(int[] arr) { int res = 1; int i=0; for (; i < arr.length; i++) { res = res * arr[i]; } return res; }
38 Exempel multiplicera talen i en array public static int multiply(int[] arr) { int res = 1; 1 int i=0; 1 for (; i < arr.length; i++) { 1+1 (*n) res = res * arr[i]; (*n) } return res; 1 } T (n) = 5 n + 3
39 Ordo O Ordo (big-o) är en övre gräns (upper bound) för hur tiden för en algoritm växer Definition: T (n) är en icke-negativ funktion T (n) O(f(n)) (dvs. T (n) tillhör mängden O(f(n))) om det finns positiva konstanter c och n 0 sådana att T (n) c f(n) för n n 0
40 Exempel multiplicera talen i en array public static int multiply(int[] arr) { int res = 1; 1 int i=0; 1 for (; i < arr.length; i++) { 1+1 (*n) res = res * arr[i]; (*n) } return res; 1 } T (n) = 5 n + 3
41 Exempel multiplicera talen i en array T (n) = 5 n + 3 Antagande: f(n) = n 5 n + 3 cn (c 5) n 3 n 3 c 5 Låt c = 6, n 0 = 3 5 n n för n 3 T (n) O(n)
42 Tidskomplexitet fall Tidskomplexiteten gäller för ett visst fall Värsta Bästa Medel För multiplikation av värden i en array spelar det ingen roll, men i andra fall kan det göra det. Viktigt att vara tydlig med vad man menar!
43 Tidskomplexitet linjär sökning Värsta fallet: O(n) Bästa fallet: O(1) 1 används om det tar konstant tid
44 Tidskomplexitet linjär sökning Värsta fallet: O(n) Bästa fallet: O(1) 1 används om det tar konstant tid Medelfallet: O(n) Antag att medelfallet tar tiden T (n/2) n/2 = n 1/2 1/2 är en konstant vi kan bortse ifrån
45 Tidskomplexitet binär sökning Värsta fallet: O(log n) Bästa fallet: O(1) Medelfallet: O(log n)
46 Tidskomplexitet beräkning När man anger komplexitet bortser man från konstanter och termer av lägre ordning Exempel: T (5 + n) O(n) T (5 + 10n) O(n) T ( n) O(n)
47 Tidskomplexitet beräkning När man anger komplexitet bortser man från konstanter och termer av lägre ordning Exempel: T (5 + n) O(n) T (5 + 10n) O(n) T ( n) O(n) T (n 2 + n) O(n 2 ) T (15n 2 + 5/8 n) O(n 2 ) T (n + log n) O(n) T (25n log n + 800) O(n log n)
48 Ordoklasser Ordo Benämning O(1) Konstant O(log n) Logaritmisk O(n) Linjär O(n log n) O(n 2 ) Kvadratisk O(n 3 ) Kubisk O(n x ) Polynomisk (för x > 1) O(2 n ) Exponentiell O(n!) Faktoriell
49 Asymptotisk storlek spelar roll! ^n n^2 n log n n log n n
50 Asymptotisk storlek spelar roll trots konstanter! ^n 2n^2 20n 10n n
51 Omega och Theta O övre gräns (upper bound) Även andra varianter finns: Ω undre gräns (lower bound) Θ T (n) Θ(n) iff T O(n) och T Ω(n)
52 Asymptotisk analys diskussion Asymptotisk analys är ett bra verktyg för att diskutera algoritmer För stor indata är alltid en algoritm med högre komplexitet långsammare Men vad stor innebär kan variera För små indata kan en algoritm vara bättre som har högre komplexitet Exempel: För riktigt små arrayer kan linjär sökning vara snabbare än binär sökning eftersom vi inte behöver beräkna medelvärden
53 Asymptotisk analys diskussion Asymptotisk analys är ett bra verktyg för att diskutera algoritmer För stor indata är alltid en algoritm med högre komplexitet långsammare Men vad stor innebär kan variera För små indata kan en algoritm vara bättre som har högre komplexitet Exempel: För riktigt små arrayer kan linjär sökning vara snabbare än binär sökning eftersom vi inte behöver beräkna medelvärden Man kan diskutera minneskomplexitet på samma sätt som tidskomplexitet
54 Algoritmanalys vad ska ni kunna? Föra grundläggande resonemang kring tidskomplexiteten för ett program/algoritm för en övre gräns i olika fall (Ordo) Speciellt med avseende på: De sök- och sorteringsalgoritmer som tas upp under kursen Vanliga operationer för de datastrukturer som tas upp under kursen Utifrån enklare kod komma resonera er fram till tidskomplexiteten (som exemplet med multiplikation av värdena i en array)
55 Vad är sortering Placera objekten i en samling i en viss ordning Vi fokuserar på sortering i en array De viktigaste operationerna som kan användas då är compare, eller ==, <, > jämför två värden swap byt plats på två värden
56 Sorteringsalgoritmer Det finns en mängd olika sorteringsalgoritmer Enkla algoritmer, mindre effektiva Selection sort Bubble sort Insertion sort Mer komplexa och effektiva algoritmer Merge sort Quick sort Shell sort
57 Selection sort Urvalssortering DEMO!!
58 Selection sort Urvalssortering DEMO!! Intuition: 1. Dela upp arrayen i en sorterad del (tom från början) och en osorterad del (hela arrayen från början) 2. leta upp det minsta värdet i den osorterade delen 3. lägg det sist i den sorterade delen 4. Upprepa steg 2+3 tills hela arrayen är sorterad
59 Selection sort kod public void sort(int[] lista) for(int i = 0; i < lista.length - 1 ; ++i) { int minindex = i; for(int j = i+1; j < lista.length; ++j) { if (lista[j] < lista[minindex]) { minindex = j; } } swap(lista, i, minindex); } } public void swap(int[] lista, int i, int j) { int temp = lista[i]; lista[i] = lista[j]; lista[j] = temp; }
60 Selection sort komplexitet public void sort(int[] l) for(int i = 0; i < l.length - 1 ; ++i) { // n-1 int minindex = i; for(int j = i+1; j < l.length; ++j) { // n-1+n if (lista[j] < l[minindex]) { // konstant minindex = j; // konstant } } swap(l, i, minindex); // konstant } }
61 Selection sort komplexitet public void sort(int[] l) for(int i = 0; i < l.length - 1 ; ++i) { // n-1 int minindex = i; for(int j = i+1; j < l.length; ++j) { // n-1+n if (lista[j] < l[minindex]) { // konstant minindex = j; // konstant } } swap(l, i, minindex); // konstant } } n + n 1 + n = (n2 +n) 2 O(n 2 ) så kallade triangeltal
62 Bubble sort och insertion sort DEMO!!
63 Bubble sort Bubbelsortering Intuition: 1. Dela upp arrayen i en sorterad del (tom från början) och en osorterad del (hela arrayen från början) 2. För varje par av värden från höger till vänster i den osorterade delen Byt plats om det högra värdet < det vänstra värdet 3. Detta innebär att det minsta värdet bubblas upp till den första platsen i den osorterade delen, och kan flyttas över till en sorterade delen 4. Upprepa tills hela arrayen är sorterad
64 Insertion sort Insättningssortering Intuition: 1. Dela upp arrayen i en sorterad del (tom från början) och en osorterad del (hela arrayen från början) 2. Flytta det första värdet i den osorterade delen till rätt plats i den sorterade delen 3. Upprepa tills hela arrayen är sorterad
65 Komplexitet bubble sort och insertion sort O(n 2 ) Använd samma resonemang som för selection sort
66 Sorteringsalgoritmer egenskaper Tidskomplexitet hur snabbt går den? Minneskomplexitet hur mycket minne tar den? Stabilitet ligger lika värden i samma ordning som innan sorteringen
67 Sorteringsalgoritmer egenskaper Tidskomplexitet hur snabbt går den? Minneskomplexitet hur mycket minne tar den? Stabilitet ligger lika värden i samma ordning som innan sorteringen För de algoritmer vi gått igenom hittills: Tid: O(n 2 ) Minne: O(n) för själva arrayen, O(1) extra minne Stabila
68 Sorteringsalgoritmer egenskaper Tidskomplexitet hur snabbt går den? Minneskomplexitet hur mycket minne tar den? Stabilitet ligger lika värden i samma ordning som innan sorteringen För de algoritmer vi gått igenom hittills: Tid: O(n 2 ) Minne: O(n) för själva arrayen, O(1) extra minne Stabila Det finns mer avancerade algoritmer med tidskomplexitet O(n log n) Det är gränsen för hur snabba sorteringsalgoritmer som baseras på jämförelser kan vara Dessa algoritmer är dock inte alltid stabila, och de kan ta extra minne
69 Avancerade sorteringsalgoritmer Merge sort Värsta fallet: O(n log n) Stabil Behöver extra minne (lite olika beroende på hur den implementeras)
70 Avancerade sorteringsalgoritmer Merge sort Värsta fallet: O(n log n) Stabil Behöver extra minne (lite olika beroende på hur den implementeras) Quick sort Medelfallet: O(n log n) Värsta fallet: O(n) Ej stabil Behöver lite extra minne, beror på implementationen
71 Avancerade sorteringsalgoritmer Merge sort Värsta fallet: O(n log n) Stabil Behöver extra minne (lite olika beroende på hur den implementeras) Quick sort Medelfallet: O(n log n) Värsta fallet: O(n) Ej stabil Behöver lite extra minne, beror på implementationen Shell sort Komplexitet svåranalyserad Beroende på implementation värsta fallet runt O(n 3/2 ) Ej stabil Inget extra minne
72 Ordnade klasser Java har ett interface Comparable Innehåller metoden int compareto(t t) som returnerar: 0 if the object is equal to t < 0 if the object is smaller than t > 0 if the object is larger than t Detta interface krävs när Java behöver kunna jämföra instanser av objekt, till exempel vid sortering
73 Lab 2, del 1 Sortering av heltal i ett grafiskt labskal Implementera två sorteringslagoritmer själva (insertion och shell sort) Jämför fem sorteringsalgoritmer under olika förutsättningar koppla till teorin
74 Lab 2, del 1 Sortering av heltal i ett grafiskt labskal Implementera två sorteringslagoritmer själva (insertion och shell sort) Jämför fem sorteringsalgoritmer under olika förutsättningar koppla till teorin Labskalet begränsat för att kunna synkronisera algoritmerna Tillhandahåller följande metoder: cmp(i,j) jämför värdena på plats i och j i arrayen (jfr compareto) swap(i,j) byter plats på värdena på plats j och i elementcount() hur många element finns det i arrayen (jfr length/size())
75 Mer om sorteringslagoritmer Vi har bara gått igenom kod för en sorteringsalgoritm idag Ni ska kunna beskriva alla de algoritmer som vi gått igenom Kunna visa hur de fungerar genom ett exempel för en array Kunna skriva (pseudo)kod för dem I labben får ni skriva egen kod för två algoritmer Labben innehåller även given kod för andra algoritmer studera den Läs i kursböckerna om sorteringsalgoritmer Även (engelska) Wikipedia har bra material om sortering
76 I veckan Tisdag Deadline för lab 1! Onsdag Föreläsning Generiska algoritmer och klasser (behövs för lab 2, del 2) Länkade listor mm (behövs för lab 3) Mer om komplexitet Lab Jobba själv innan onsdag Sätt igång med del 1 i lab 2 Läs på om sökning, sortering, komplexitet Komplexitet: grundläggande Eck 8.5, mer avancerat Shaffer
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
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
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
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 =
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
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
Programkonstruktion och Datastrukturer
Programkonstruktion och Datastrukturer VT 2012 Tidskomplexitet Elias Castegren elias.castegren.7381@student.uu.se Problem och algoritmer Ett problem är en uppgift som ska lösas. Beräkna n! givet n>0 Räkna
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,
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
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
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
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
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
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
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
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, Ordo Sortering, Insertionsort
Asymptotisk komplexitetsanalys
1 Asymptotisk komplexitetsanalys 2 Lars Larsson 3 4 VT 2007 5 Lars Larsson Asymptotisk komplexitetsanalys 1 Lars Larsson Asymptotisk komplexitetsanalys 2 et med denna föreläsning är att studenterna skall:
Länkade strukturer, parametriserade typer och undantag
Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer
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
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
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
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;
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 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:
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
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
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
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
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
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 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
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
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
Ö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
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
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
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
Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6
Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar
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 {
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,
Teoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för
Tentamen Datastrukturer D DAT 035/INN960
Tentamen Datastrukturer D DAT 035/INN960 22 december 2006 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser,
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
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
Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.
Algoritmanalys Analys av algoritmer används för att uppskatta effektivitet. Om vi t. ex. har n stycken tal lagrat i en array och vi vill linjärsöka i denna. Det betyder att vi måste leta i arrayen tills
samt lite algoritmer en kortfattad introduktion för studenter på Intro:DV
O, P, N och NP samt lite algoritmer en kortfattad introduktion för studenter på Intro:DV DSV En enkel algoritm Ponera att du spelar poker och har fått korten till höger. Eftersom det bara rör sig om fem
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
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
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: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (8) TENTMEN: lgoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. örja varje uppgift på ett nytt blad. Skriv inga lösningar i tesen. Skriv ditt idnummer
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
Tommy Färnqvist, IDA, Linköpings universitet. 2 Rekursion i C Implementation av rekursion Svansrekursion En till övning...
Föreläsning 15 Rekursion TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 2 november 2015 Tommy Färnqvist, IDA, Linköpings universitet 15.1 Innehåll
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
Sökning och sortering. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista
Sökning och sortering Sökning och sortering - definitioner Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man
if (n==null) { return null; } else { return new Node(n.data, copy(n.next));
Inledning I bilagor finns ett antal mer eller mindre ofullständiga klasser. Klassen List innehåller några grundläggande komponenter för att skapa och hantera enkellänkade listor av heltal. Listorna hålls
Sökning och sortering
Sökning och sortering Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data och många sökningar måste
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,
Föreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT07) Fredrik Lindblad 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat07 1 Innehåll
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 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
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
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
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 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) Läsanvisningar och uppgifter Algoritm En algoritm är ett begränsat
Föreläsning 1. Abstrakta datatyper, listor och effektivitet
Föreläsning 1 Abstrakta datatyper, listor och effektivitet Föreläsning 1 Datastrukturer Abstrakta DataTyper ADT Lista Lista och Java Collections Framework (ArrayList) Lista implementerad med en array Analys
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
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,
Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista
Sökning och sortering Sökning i oordnad lista Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data
Teoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2013-06-05 1 (6) Teoretisk del 1. (3p) "Snabba frågor" Alla svar motiveras väl. a) Vad skiljer en statisk metod från en icke-statisk? (0.5p) Svar:En statisk metod är associerad till
Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)
Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag) 21 december 2007 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng
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
Lösningsförslag till tentamen Datastrukturer, DAT037,
Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-01-10 1. Båda looparna upprepas n gånger. s.pop() tar O(1), eventuellt amorterat. t.add() tar O(log i) för i:te iterationen av första loopen.
Tentamen med lösningsförslag Datastrukturer för D2 DAT 035
Tentamen med lösningsförslag Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.)
Algoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 1 Anton Grensjö grensjo@csc.kth.se 14 september 2015 Anton Grensjö ADK Övning 1 14 september 2015 1 / 22 Översikt Kursplanering F1: Introduktion, algoritmanalys
Föreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig
Rekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas, Malin Källén 20 mars 2016 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
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
Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)
Binära träd Algoritmer och Datastrukturer Markus Saers markus.saers@lingfil.uu.se Upplägg Binära träd (9) Binära sökträd (0.) Träd Många botaniska termer Träd, rot, löv, gren, Trädets rot kan ha ett antal
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
String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning
Dagens Agenda String [] argv String [] argv Arrayer och Strängar fortsättning Booleska operatorer if, for, while satser Introduktion till algoritmer public static void main(string [] argv) argv är variabelnamnet
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.
Facit Tentamen TDDC (7)
Facit Tentamen TDDC30 2014-03-18 1 (7) Teoretisk del 1. (3p) "Snabba frågor" a) Varför kan man tänkas vilja dölja metoder och variabler med private? (0.5p) Svar:För att skydda interna variabler från ändringar
Dugga Datastrukturer (DAT036)
Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre
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
Problemlösning och algoritmer
Problemlösning och algoritmer Human Centered Systems Inst. för datavetenskap Linköpings universitet Översikt Stegvis förfining Pseudokod Flödesdiagram Dekomposition KISS regeln Procedurell dekomposition
Lösningsförslag för tentamen i Datastrukturer (DAT036) från
Lösningsförslag för tentamen i Datastrukturer (DAT036) från 2011-12-16 Nils Anders Danielsson 1. Låt oss benämna indatalistan strängar. Vi kan börja med att beräkna varje strängs frekvens genom att använda
DAI2 (TIDAL) + I2 (TKIEK)
TNTMN KURSNMN PROGRM: KURSTKNING XMINTOR lgoritmer och datastrukturer I2 (TIL) + I2 (TKIK) 2017/2018, lp 4 LT75 Uno Holmer TI ÖR TNTMN redagen den 1/8 2018, 08.0-12.0 HJÄLPML NSVRIG LÄRR atastrukturer
Dekomposition och dynamisk programmering
Algoritmer, datastrukturer och komplexitet, hösten 2016 Uppgifter till övning 3 Dekomposition och dynamisk programmering Max och min med dekomposition I vektorn v[1..n] ligger n tal. Konstruera en dekompositionsalgoritm
Tentamen Datastrukturer, DAT037 (DAT036)
Tentamen Datastrukturer, DAT037 (DAT036) Datum, tid och plats för tentamen: 2017-08-17, 8:30 12:30, M. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 9:30 och ca 11:00.
Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.
Tentamen Programmeringsteknik II 2018-05-28 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper. Fyll i försättssidan
Datastrukturer och algoritmer
Datastrukturer och algoritmer Föreläsning 5 Algoritmer & Analys av Algoritmer Algoritmer Vad är det? Innehåll Mer formellt om algoritmer beräkningsbarhet Att beskriva algoritmer Analysera algoritmer Exekveringstid,
Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på
Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), 2017-01-11 1. Loopen upprepas n gånger. getat på en dynamisk array tar tiden O(1). member på ett AVL-träd av storlek n tar tiden O(log n).
Datastrukturer. föreläsning 3. Stacks 1
Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer
F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad
F5: Debriefing OU2, repetition av listor, träd och hashtabeller Carl Nettelblad 2017-04-24 Frågor Kommer nog inte att täcka 2 timmar Har ni frågor på OU3, något annat vi har tagit hittills på kursen, listor
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
DAT043 - föreläsning 8
DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns
TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00
TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 170117 kl. 14:00-19:00 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilagarna. *** OBS *** Betygsgräns:
Föreläsning REPETITION & EXTENTA
Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder
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