Programmering för språkteknologer II. OH-serie: Sökning och sortering. Algoritm
|
|
- Hanna Nilsson
- för 8 år sedan
- Visningar:
Transkript
1 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 objekten i en samling i en viss ordning. (Om en samling är sorterad blir sökning effektivare. Jfr t.ex. med ett bibliotek.) Extremt viktiga problem. Relevanta i vitt skilda sammanhang. Olika algoritmer för båda. Institutionen för lingvistik och filologi Oktober Algoritm en systematisk procedur som i ett ändligt antal steg anger hur man utför en beräkning eller löser ett givet problem (NE) Man talar ofta om algoritmer på en abstraktionsnivå som tillåter olika sätt att implementera dem. Linjär sökning Extremt enkel algoritm. Samlingen behöver ej vara sorterad. Låt oss ta fält, som är den typ av samling man brukar titta på. (Varför?) Man går igenom dess platser från början till slut (eller till träff). Tidsödande. Hur? 3 4
2 Kodexempel (en metod för linjär sökning) Sökaint-värde i fält avint (int[]). public static int linsearch(int[] arr, int x) { for (int i=0; i < arr.length; i++) { if (arr[i]==x) { return i; // index för första träff return -1; // för "ingen träff" } // (-1 omöjligt index) Linjär sökning: komplexitet (förenklat) Varje jämförelse har en viss tidskostnad. Man måste titta igenom hela samlingen för att veta att sökt objekt inte finns. Om objektet finns och givet vissa antaganden om slumpmässighet, så kan man tänka sig att medelvärdet för antalet jämförelser är lika med samlingens halva längd. 5 6 Linjär komplexitet Om en algoritms tidsåtgång T beter sig på det här sättet, så är den av linjär komplexitet. G en konstant grundkostnad. n inputs längd. k en kostnad per värde/jämförelse. T = G+n k. Linjär sökning är ett exempel på en algoritm med linjär komplexitet. Binär sökning (lätt förenklat) Om vi har en ordnad del av ett fält kan vi eliminera halva delen för varje jämförelse med sökt värde. Vi tittar på mittvärdets storlek och ser om sökt värde finns före eller efter. Vi kan då söka igenom t.ex. ett fält med 1024 värden med med 11 jämförelser. Antal kvar efter varje mittvärdesjämförelse ( ): svar. Stor vinst jämfört med linjär sökning (vid större fält)! 7 8
3 Exempel sök 29 (target == 29) Jämförelse:arr[mid] > target (mid mittvärdet ). Ja: uteslut högerdel inkl.arr[mid]. Nej: uteslut vänsterdel exkl.arr[mid]. (nej) (nej) (nej) (ja) rätt, returnera index 14 Exempel (sök 12) ingen träff, returnera -1 (för ingen träff ) 9 10 Logaritmisk komplexitet Om en algoritms tidsåtgång T beter sig på det här sättet, så är den av logaritmisk komplexitet. G en konstant grundkostnad. n inputs längd. k en kostnad per jämförelse. T = G+m k, om n = 2 m. (T = G+ 2 log n k). Varje fördubbling av indatas längd ger en konstant tidkostnad. (Jfr. linjär: fördubbling av indata ger fördubblad kostnad.) Olika instanser av samma problem Binärsök i givet fält 12 mellan index 0 och 15: Binärsök i givet fält 12 mellan index 0 och 7: Binärsök i givet fält 12 mellan index 4 och 7:... Binärsök i givet fält 12 mellan index 6 och 6: 11 12
4 Kodexempel: binär sökning Skall visa två metoder att söka efter ett int-målvärde i ett sorterat int[]-fält mellan två index. Ytterligare krav: unika värden i fältet. Rekursiv implementation: Anropar samma metod (fast med allt snävare intervall, givet som argument). Icke-rekursiv implementation med while-slinga. Lab: Ni skall parametrisera så att det fungerar för alla ordningsbara objekttyper (d.v.s. de som implementerar interface tcomparable<t>, mer om detta snart). Kodexempel: binär sökning, rekursiv public static int binsearch(int[] arr, int target, int low, int high) { if (high - low > 0) { int mid = (low+high+1)/2; if (arr[mid] > target) { return binsearch(arr,target,low,mid-1);} else { return binsearch(arr,target,mid,high);}} else { if (arr[low] == target) {return low;} else {return -1;}}} Kodexempel: binär sökning, while-upprepning public static int binsearch2(int[] arr, int target, int low, int high) { while (high - low > 0) { int mid = (low+high+1)/2; if (arr[mid] > target) {high = mid-1;} else {low = mid;} if (arr[low] == target) {return low;} else {return -1;}} Generisering/parametrisering av detta Not till labben! Bör avse objekstyper med en ordningsrelation. Standardmetod:int compareto(t o) GränssnittetComparable<T> kräver att denna metod finns. Man kan ställa krav på en parameter till en generisk klass, t.ex. så här: public class MyClass<T extends Comparable<T>> {...} extends i stället förimplements i denna kontext
5 Sortering Som vi såg var det mycket billigare att söka i en sorterad sekvens av värden än i en osorterad. Det är alltså ofta smart att sortera de objektssamlingar man skall söka i. Sortering behövs ofta när människor skall använda data, t.ex. läsa artiklar i en uppslagsbok. Sortering: urvalssortering ( naiv algoritm) Princip: Gå igenom index från minsta till största och se till att minsta värdet hamnar på första platsen, näst minsta värde hamnar på andra platsen, o.s.v. Byt plats på (swap) jämförda värden så fort ett efterföljande värde är mindre än det på aktuellt index. (En variant som ger mest kompakt kod.) Kodexempel: urvalssortering (av int[]-fält) public static void selsort(int[] arr) { for (int i = 0; i < arr.length-1; i++) { for (int j = i+1; j < arr.length; j++) { if (arr[i] > arr [j]) { swap(arr,i,j); } Kodexempel: swap public static void swap(int[] arr, int x, int y) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } 19 20
6 Ett exempel på urvalssortering Indataint[] arr = {57,44,91,32,57 Jämförelser, indexpar (jämte aktuella värden) och konsekvens (swap eller ingenting). 0-1 (57-44): swap 1-3 (57-44): swap 0-2 (44-91) 1-4 (44-57) 0-3 (44-32): swap 2-3 (91-57): swap 0-4 (32-57) 2-4 (57-57) 1-2 (57-91) 3-4 (91-57): swap Beteende hos urvalssortering J/S: jämförelse/swap. [ j = 0] j = 1 j = 2 j = 3 j = 4 i = 0 - J/S J/S J/S J/S i = J/S J/S J/S i = J/S J/S i = J/S [i = 4] Komplexitet hos urvalssortering Fält av längden n ger (n 1) st jämförelse+swap (Swap varje gång i värstafallet. Hur ser det ut?) T.ex = 10 i exemplet med längden 5. Funktionen kallas triangeltal (kolla Wikipedia!) m = (m 2 + m)/2. När n blir allt större så blir n 2 -komponenten relativt sett allt större än n-komponenten. Man talar därför om en kvadratisk komplexitet här. (Tänk triangel är halvkvadrat.) Smartare algoritm: Quicksort Välj ut ett pivotvärde, som bör ligga nära mitten ordningsmässigt bland de värden som skall sorteras. Dela (partitionera) sedan i två högar: värden mindre, respektive värden större än pivoten. Partitionera sedan de två högarna på samma sätt. Typ, om vi väljer bokstäver smart: Lägg alla böcker A L i en hög; M Ö i en annan. Dela sedan i A F och G L samt M R och S Ö. O.s.v
7 Välja pivot Måste vara en smart gissning som bygger på en billig beräkning. För att räkna ut det verkliga mittobjektet i samlingen måste man redan ha sorterat den. En lösning (givet ett fält som skall sorteras): Ta medianen av värdena på första, mittersta och sista index. Median: det mittersta i storleksordning. int pivot = median(arr[low], arr[(low+high+1)/2], arr[high]); Välja pivot, exempel int[] arr = {44,57,91,32,12,93, vi ser på hela, från index 0 tilll 5. int pivot = median(arr[0],arr[3],arr[5]); blir samma som median(44,32,93); Alltså 44. Råkar vara ett mycket bra val (men det blir det inte alltid) Partitionering Partitionera fält mellan indexlow ochhigh (inklusivt). public static int partition(int[] arr, int low, int high) { int pivot = median(arr[low], arr[(low+high+1)/2], arr[high]); Forts. Partitionering, forts. while (low < high) { while (arr[low] < pivot) {low++; while (arr[high] > pivot) {high--; swap(arr,low,high); // som tidigare return low; // index med pivot som värde // hamnar mellan partitionerna } Obs! Förutsätter unika värden i fältet
8 Quicksort mellan två index, rekursiv public static void qsort(int arr[], int low, int high) { if (high-low < 2) { // EN ELLER TVÅ VÄRDEN if (arr[low] > arr[high]) { swap(arr,low,high);} else { // TRE ELLER FLER VÄRDEN int pivotidx = partition(arr, low, high); qsort(arr, low, pivotidx); // "HÖG" 1 qsort(arr, pivotidx+1, high); } } // "HÖG" 2 // OBS! PIVOT I "HÖG" 1. Quicksort mellan två index, icke-rekursiv 1 Quicksort gör ju att vi i varje givet läge måste hålla reda på ett godtyckligt antal högar som vi skall partitionera. En hög är färdig efter en swap om den är av storleken en eller två värden. Större högar än så partitioneras till två högar. D.v.s en hög försvinner och två tillkommer. En lösning: Vi har två fält (int[]),lo ochhi, så att hög n ligger från position lo[n] till positionhi[n] i det fält som sorteras (arr) Quicksort mellan två index, icke-rekursiv 2 Som sagt, hög nligger från positionlo[n] till position hi[n] i det fält som sorteras (arr). Varje hög är ett segment avarr. En variabelint il håller reda på antalet högar vi har kvar att partitionera. I ett typiskt fall kommer detta antal att gå från 1 och öka med 1 för varje partitionering och sedan minska när partitioneringar är färdiga (längd 1 eeller 2). Närint il == 0 terminerar processen. Quicksort mellan två index, icke-rekursiv I public static void qsort2(int[] arr, int low, int high) { int[] lo = new int[500]; // som stack int[] hi = new int[500]; // som stack int il = 1; // antal "högar" kvar att sortera lo[il]=low; hi[il]=high; // intervall nr il [FORTSÄTTER med en while-slinga] Obs! 500 maxdjup för stack. Ingen säkerhetskontroll
9 Quicksort mellan två index, icke-rekursiv II while (il > 0) { if (hi[il]-lo[il] < 2) { // EN ELLER TVÅ VÄRDEN if (arr[lo[il]] > arr[hi[il]]) { swap(arr,lo[il],hi[il]); il--; } // BIT NR il KLAR else { // d.v.s MINST TRE [SE NÄSTA SIDA] } } } Quicksort mellan två index, icke-rekursiv III while (il > 0) { [FÖREGÅENDE SIDA] else { // MINST TRE; inte (hi[il]-lo[il] < 2) int pivotidx = partition(arr,lo[il],hi[il]); lo[il+1] = lo[il]; // NY "HÖG" il+1 (LÄGRE) hi[il+1] = pivotidx; lo[il] = pivotidx+1; // DEN HÖGRE SKRIVS ÖVER // DEN GAMLAS INDEX. il++; // hi[il] SOM TIDIGARE } } } // il++: EN "HÖG" TILLKOM Sammanfattning: fyra algoritmer Sökning: linjär sökning binär sökning: halvera sökrymden för varje jämförelse Sortering: placera ett värde i taget rätt: urvalssortering Quicksort: försök halvera mängden värden att sortera för varje iteration Det finns många fler algoritmer på dessa områden. 35
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
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 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
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
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 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
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
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 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
Ö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
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
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
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:
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 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
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 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
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
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
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
Instuderingsfrågor, del D
Uppgift 1. Instuderingsfrågor, del D Objektorienterad programmering, Z1 I vilka av nedanstående problem behöver man använda sig av fält för att få en elegant lösning? I vilka problem är det är det onödigt/olämpligt
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
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 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
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
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
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,
Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)
Grundläggande programmering med C# Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng TEN1 NGC011 Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) (Ifylles av student) (Ifylles av student)
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
Introduktion till programmering SMD180. Föreläsning 9: Tupler
Introduktion till programmering Föreläsning 9: Tupler 1 1 Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser av vad som helst Muterbara Syntax: [1, 2, 3]
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
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
Föreläsning 2, vecka 8: Repetition
TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 8: Repetition Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Idag Metoder och terminologi Referensvärden och arrays Interface och ritning
Innehåll. Sökning och hashtabeller. En bilsamling att söka i. En bil-klass att söka efter. Hur hittar vi alla bilar som uppfyller ett annat villkor
Innehåll Sökning och hashtabeller Henrik Bergström henrikbe@dsv.su.se Sökning i linjära strukturer Söka efter många objekt Sökning efter ett objekt Sekventiell sökning Binär sökning Sökning efter godtyckligt
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
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
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
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
Lösningar Datastrukturer TDA
Lösningar Datastrukturer TDA416 2016 12 21 roblem 1. roblem 2. a) Falskt. Urvalssortering gör alltid samma mängd av jobb. b) Sant. Genom att ha en referens till sista och första elementet, kan man nå både
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
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. 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
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
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
Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.
Sortering Den sorteringsalgoritm som vi använder oss kallas selection sort (urvalssortering) och är en av många existerande sorteringsalgoritmer. Dess funktionssätt beskrivs kanske bäst genom ett konkret
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,
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 PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
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
Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ
orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]
Objektorienterad programmering med Java, Generics
Generics i Java Generic: allmän, genersisk. På menyn på en asiatisk restaurang: Denna rätt serveras med valfritt kött, fisk eller skalddjur Bakgrund Generics i Java ger oss att skriva kod, klasser och
Föreläsning 6: Metoder och fält (arrays)
TDA 545: Objektorienterad programmering Föreläsning 6: Metoder och fält (arrays) Magnus Myréen Chalmers, läsperiod 1, 2015-2016 I (föregående och) denna föreläsning Läsanvisning: kap 2 & 13 meddelanden
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
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.
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
BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X
Algoritmer och Datastrukturer Kary FRÄMLING/Göran PULKKIS (v23) Kap. 7, Sid 1 BINÄRA TRÄD Träd används för att representera olika slags hierarkier som ordnats på något sätt. Den mest använda trädstrukturen
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
Programmering för språkteknologer II, HT2011. Rum
Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget
for-satsen Fält for-satsen Föreläsning 8 (OH-bilder 7) for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende:
for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende: TDA143 I1 Programmerade system Föreläsning 8 (OH-bilder 7) for-satsen for ( initiering; villkor; ändring) sats;
1 Standardalgoritmer. 1.1 Swap. 1.2 Sök minsta värdet i en array
1 Standardalgoritmer En algoritm är en beskrivning av en metod för att låsa någon uppgift. Man specificerar indata och utdata. Indatat ges av metodargument och utdata ges som regel av returtypen. 1.1 Swap
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,
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
MMA132: Laboration 2 Matriser i MATLAB
MMA132: Laboration 2 Matriser i MATLAB Introduktion I den här labben skall vi lära oss hur man använder matriser och vektorer i MATLAB. Det är rekommerad att du ser till att ha laborationshandledningen
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
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
7 Programmeringsteknik
7 Programmeringsteknik Att skriva ett program innebär att man skriver en plan för hur bearbetningen av data ska utföras. Vilken typ av data och vilken typ av bearbetning, som ska göras, ska vara bestämt
Typkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4
Avbildningar och hashtabeller Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4 1 2 Mängder i Java 3 Mängd-gränssnittet Set vs. List Mängder får endast innehålla unika element: Metoden.add(E) returnerar
Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass
Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klassen Mio ffl Särfall ffl Interface Kungl. Tekn. Högskolan
Tentamen Programmeringsteknik II Inledning. Anmälningskod:
Tentamen Programmeringsteknik II 2016-01-11 Inledning I bilagan finns ett antal mer eller mindre ofullständiga klasser. Några ingår i en hierarki: List, SortedList, SplayList och ListSet enligt vidstående
Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Lösningsförslag till tentamen 150317
Uppgift 1 Lösningsförslag till tentamen 150317 1) Sant 2) Falskt. I ett RAM-minne är åtkomsttiden densamma för alla minnesadresser.) 3) Falskt. Det är TCP som använder sig av en fast kommunikationsförbindelse.)
Föreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
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
Lösningsförslag till tentamen Datastrukturer, DAT037,
Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-04-05 1. q.dequeue() tar O(1) (eventuellt amorterat) s.contains(x) tar O(1) pq.add(x) tar O(log i) I värsta fall exekveras innehållet i if-satsen.
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
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
Sätt att skriva ut binärträd
Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer
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.
Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp
Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser
Tentamen ID1004 Objektorienterad programmering October 29, 2013
Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.
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
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
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
Tentamen i Introduktion till programmering
Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:
Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.
Facit Tentamen TDDC30 2015-03-19 kl 08-12 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Varför väljer man ofta synligheten private hellre än public för medlemsvariabler i en klass?
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
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,
Datorer och programmering TDB2: Aggregat Eva Pärt-Enander Aggregat i C++ Kan också kallas komposition. En klass eller objekt är uppbyggd av andra klasser eller objekt. En klass har attribut av andra, redan
TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng
TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,
JAVAUTVECKLING LEKTION 4
JAVAUTVECKLING LEKTION 4 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Iterationer (loopar) Algoritmer Mer om felsökning 1 WHILE-SATSEN String s = JOptionPane.showInputDialog("Talet
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
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).
Programmering för språkteknologer II. OH-serie: Ändliga automater. reguljära uttryck i Java. Deterministiska ändliga automater
Programmering för språkteknologer II OH-serie: ändliga automater reguljära uttryck i Java Mats Dahllöf Ändliga automater Abstrakt maskin, tillståndsmaskin, transitionssystem. (Den enklaste typ man brukar
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:
3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.
KTH, Nada, Erik Forslin 2D1343, LÖSNING TILL TENTAMEN I DATALOGI FÖR ELEKTRO Lördagen den 8 mars 2003 kl 14 19 Maxpoäng tenta+bonus = 50+7. Betygsgränser: 25 poäng ger trea, 35 ger fyra, 45 ger femma.
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 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
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