Medan ni väntar. 2. Skriv metoden. 3. Skriv metoden. Naturligtvis rekursivt och utan användning av Javas standardmetoder.
|
|
- Astrid Axelsson
- för 5 år sedan
- Visningar:
Transkript
1 (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 public static String blanks(int n) som returnerar en sträng med n blanktecken. 3. Skriv metoden public static String tostring(int[] arr) som returnerar en sträng med talen i arrayen separerade med kommatecken. Hela strängen skall omges av hakparenteser. Naturligtvis rekursivt och utan användning av Javas standardmetoder.
2 (10 september 2018 T02 2 ) Binär sökning n är ungefär log 2 (n) Alltså: Att söka binär bland en miljard element kräver högst ca 30 jämförelser!
3 (10 september 2018 T02 3 ) Blanks public static String blanks(int n) { if (n == 0) return ""; else return + blanks(n-1); } Vad händer om n < 0?
4 (10 september 2018 T02 4 ) tostring för array public static String tostring(int[] arr, int n) { return [ + tostringhelp(arr, n) + ] ; } public static String tostringhelp(int[] arr, int n) { if (n==0) { return ""; } else if (n == 1) { return "" + arr[0]; } else { return tostringhelp(arr, n-1) + ", " + arr[n-1]; } } (Kom dock ihåg Arrays.toString( arrayreferens ))
5 (10 september 2018 T02 5 ) Förra föreläsningen Algoritmer Rekursion Algoritmers resurskrav (tid, utrymme) Asymptotisk notation (Ordo, Theta, Omega) Uppskattningar av reell tidsåtgång Idag: Fler och mer komplicerade exempel på konstruktion och analys av rekursiva algoritmer
6 (10 september 2018 T02 6 ) Rekursiv problemlösning 1. Dela upp problemet i ett eller flera delproblem av samma typ som ursprungsproblemet 2. Lös delproblemen på samma sätt 3. Kombinera lösningarna till delproblemen till en lösning på ursprungsproblemet Det måste finnas minst ett basfall Observera likheten med induktionsbevis!
7 (10 september 2018 T02 7 ) Exempel: Rekursiv instickssortering Sortera de n första elementen i en array: sortera a 0, a 1, a 2,..., a n 2, a n 1 sortera a 0, a 1, a 2,..., a n 2 infoga a n 1 i de sorterade elementen infoga x i a 0, a 1,..., a m om m = 0 eller x a m 1 lägg x på plats m annars flytta a m 1 till a m infoga x i a 0, a 1, a 2... a m 1 Obs: Värdet som ligger på plats m förstörs
8 (10 september 2018 T02 8 ) Instickssortering n 2 n sort(n 1)
9 (10 september 2018 T02 9 ) Rekursiv insticksortering: Kod /** * Sorts the elements a[0], a[1], a[2],... a[n-1] a the array to be sorted n number of elements to be sorted */ public static void sort(int[] a, int n) { if (n > 1) { sort(a, n-1); insert(a[n-1], a, n-1); } }
10 (10 september 2018 T02 10 ) Instickssortering: Rekursiv infogning /** * Inserts x in the array a[0],..., a[m]. * * Precondition: a[0] <= a[1] <=... <= a[m-1] * Postcondition: a[0] <= a[1] <=... <= a[m-1] <= a[m] * * The old value of a[m] is destroyed */ public static void insert(int x, int[] a, int m) { assert a.length > m; if (m == 0 x >= a[m-1]) a[m] = x; else { a[m] = a[m-1]; insert(x, a, m-1); } }
11 (10 september 2018 T02 11 ) Några nya begrepp precondition: Förhållande som förutsätts gälla när koden börjar postcondition: Förhållanden som ska gälla när koden har exekverat färdigt. Hjälper oss att resonera kring koden och övertyga oss om att den är korrekt. assert: En Java-konstruktion för att verifiera något som ska vara sant. Om villkoret inte är uppfyllt avbryts programmet. Fungerar också som dokumentation! Bra att använda i programutvecklingen! Kan slås av och på via flagga. DrJava har det påslaget som standard.
12 (10 september 2018 T02 12 ) Analys av insert Den centrala operationen är testen (m==0 x >= a[m-1]). Låt s(n) stå för antalet gånger den utförs vid anropet insert(x, a, n) Bästa och värsta fall: respektive s(n) = 1 s(n) = s(n 1) + 1 = s(n 2) =... = s(0) + n = 1 + n och i genomsnitt s(n) 1 + n/2
13 Analys av sort Låt t(n) vara antalet gånger som den centrala jämförelsen görs. Då blir t(n) = t(n 1) + s(n 1) Således bästa fall: t(n) = t(n 1) + 1 = t(n 2) =... = t(1) + n 1 = n 1 Värsta fall: t(n) = t(n 1) + n = t(n 2) + (n 1) + n = (n 1) = n(n 1)/2 Genomsnitt: t(n) = n(n 1)/4 (10 september 2018 T02 13 )
14 (10 september 2018 T02 14 ) Fråga Antag att det tar 1 sek att sortera 10 3 slumptal med instickssorteringen. Hur lång tid kommer det att ta att sortera 10 4, 10 5, respektive 10 6 tal? Svar: 10 2, 10 4 respektive 10 6 sekunder. Hur lång tid är 10 6 sekunder? Drygt 11 dygn
15 (10 september 2018 T02 15 ) Urvalssortering Samma rekursionsfall som i instickssorteringen men men låt största och sista elementet byta plats före rekursionanropet. sortera a 0, a 1, a 2,..., a n 2, a n 1 byt plats på a n 1 och det största av elementen a 0,..., a n 1 sortera a 0, a 1, a 2,..., a n 2
16 (10 september 2018 T02 16 ) Urvalssortering max n swap sort(n 1)
17 (10 september 2018 T02 17 ) Urvalssortering: kod. Läs själva! x public static void recursiveselectionsort(int [] a, int n) { if (n>1) { int indmax = indmax(a, n); int x = a[n-1]; a[n-1] = a[indmax]; a[indmax] = x; recursiveselectionsort(a, n-1); } }
18 (10 september 2018 T02 18 ) Urvalssortering: Hitta index för största. Läs själva! public static int indmax(int[] a, int n) { assert n>0; if (n == 1) { return 0; } else { int k = indmax(a, n-1); if (a[k] >= a[n-1]) { return k; } else { return n-1; } } }
19 (10 september 2018 T02 19 ) Iterativ urvalssortering Visar också att man kan leta minsta i stället för största... public static void iterativeselectionsort(int[] a) { for (int i=0; i<a.length; i++) { int indmin = i; for (int j=i+1; j<a.length; j++) { if (a[j] < a[indmin]) { indmin = j; } } int x = a[i]; a[i] = a[indmin]; a[indmin] = x; } } Övning: Skriv varianten som letar minsta i stället för största rekursivt
20 (10 september 2018 T02 20 ) Urvalssortering: Analys Det som görs mest av allt är jämförelsen a[j] < a[indmin] som görs O(n 2 ) gånger där n är antalet element (inses lätt). Hitta största av n tal: n 1 jämförelser Hitta största av n 1 tal: n 2 jämförelser Totalt: (n 1) + (n 2) + (n 3) = n 2 (n 1) = 0.5n2 0.5n som är Θ(n 2 ). Observera att detta gäller i bästa fall, i genomsnitt och i värsta fall.
21 (10 september 2018 T02 21 ) Sortering med mergesort Mergesort: 1. Dela mängden i två lika stora delar 2. Sortera delarna var för sig 3. Sammanfoga delarna
22 (10 september 2018 T02 22 ) Illustration av mergesort n
23 (10 september 2018 T02 23 ) Illustration av mergesort n/2 n/2
24 (10 september 2018 T02 24 ) Illustration av mergesort Sorteras var för sig
25 Illustration av mergesort (10 september 2018 T02 25 )
26 Illustration av mergesort (10 september 2018 T02 26 )
27 (10 september 2018 T02 27 ) Illustration av mergesort Till slut:
28 (10 september 2018 T02 28 ) Analys av mergesort Löser ett problem av storlek n genom att lösa två problem av storlek n/2 och sammanfoga lösningarna till delproblemen. Tiden för sammanfogningen är direkt proportionell mot n. Låt t(n) beteckna tiden att sortera n element. Då gäller t(n) = { c om n = 0, 2t(n/2) + dn om n > 0. där c och d är obekanta konstanter.
29 (10 september 2018 T02 29 ) Analys av mergesort Om n är en jämn 2-potens, n = 2 k så gäller t(n) = 2t(n/2) + dn = = 2(2t(n/4) + dn/2) + dn = = 4t(n/4) + dn + dn =... = 2 k t(n/2 k ) + dnk = = nt(1) + dn log n dvs tiden är Θ(n log n) som är bra! (Gäller även om n inte är en jämn 2-potens)
30 (10 september 2018 T02 30 ) Exempel: Quicksort Idé: 1. Ordna om elementen i arrayen så att små ligger till vänster och stora till höger. 2. Sortera de små element för sig och de stor för sig (rekursivt) Skillnaden mot mergesort är att vi ordnar om elementen innan vi applicerar den metoden rekursivt på delarna. Nackdel: Arbetsammare att skapa delproblemen Fördel: Ingen samsorteringsfas
31 (10 september 2018 T02 31 ) Quicksort Hur vet man vilka element som är små? Man chansar! Väljer ett element på måfå som delningselement p. Grunden i quicksort är den så kallade partitioneringen (quicksort kallas ibland också partition sort). 1 k k + 1 n p p Bra om k blir nära n/2 och dåligt om k blir nära 1 eller n. Partitioneringen appliceras rekursivt på de små respektive de stora talen.
32 (10 september 2018 T02 32 ) Quicksort i array: illustration p: partitionering små värden stora värden sortering av delarna rekursivt
33 (10 september 2018 T02 33 ) Quicksort: kommentarer Mycket snabb sorteringsmetod! Hur väljer man pivot-element? Hur gör man när partitionerna blir små? Tyvärr ej stabil Beräkning av median, kvartiler...
34 (10 september 2018 T02 34 ) Fibonacci-talen Fibonaccitalen F n definieras enligt 0 om n = 0, F n = 1 om n = 1, F n 1 + F n 2 om n > 1. i kod: public static long fib(int n) { if ( n==0 ) return 0; else if ( n==1 ) return 1; else return fib(n-1) + fib(n-2); }
35 (10 september 2018 T02 35 ) Fibonacci: Hur beror tiden av n? Låt t(n) vara antalet additioner som görs för att beräkna den n : te Fibonacci-talet. t(n) = t(n 1) + t(n 2) + 1 Man kan visa (se rekursionsmaterialet) att t(n) c n dvs tiden växer exponentiellt med n. Hopplöst för stora n! Fråga: Varför blir det så dåligt när det går att lösa så mycket bättre? Svar: Man kommer att lösa samma problem många gånger.
36 (10 september 2018 T02 36 ) Exempel: Brickleken A B C Traven skall flyttas från A till C Brickor får flyttas hur som helst mellan platserna A, B och C men 1. endast en bricka i taget får flyttas och 2. man får inte lägga en större bricka på en mindre.
37 (10 september 2018 T02 37 ) Brickleken Beteckna problemet att flytta n brickor från en plats till en annan med h(n) h(n) n A B C
38 (10 september 2018 T02 38 ) Brickleken Eftersom understa brickan på A skall flyttas till C så måste vi först lösa problemet att flytta de n 1 översta brickorna från A till B: h(n 1) n 1 A B C Det är uppenbarligen samma typ av problem som ursprungsproblemet men lite mindre.
39 (10 september 2018 T02 39 ) Brickleken h(n 1) n 1 A B C
40 (10 september 2018 T02 40 ) Brickleken När det är gjort kan vi flytta den understa brickan från A till C: h(1) n 1 A B C
41 (10 september 2018 T02 41 ) Brickleken När det är gjort skall vi flytta traven på B till C: h(n 1) n 1 A B C också det ett lite mindre problem än ursprungsproblemet.
42 (10 september 2018 T02 42 ) Brickleken Således har vi löst ursprungsproblemet med n brickor genom att 1. flytta n 1 brickor från A till B med hjälp av C, 2. flytta 1 bricka från A till C (utan hjälp av B) och 3. flytta n 1 brickor från B till C med hjälp av A Koden (i det närmaste trivial... ) void bricklek(char from, char to, char help, int n) {... } Anropas för vårt problem med bricklek( A, C, B, n) (ta inte alltför stort n... ) DrJava
43 (10 september 2018 T02 43 ) Analys av brickleken Problem av storleken n löses genom att lösa två problem av storleken n 1 och ett problem av storleken 1. Således gäller för erforderligt antal brickförflyttningar b(n): b(n) = 2b(n 1) + 1 = Hopplöst för stora n! = 2(2b(n 2) + 1) + 1 = 4b(n 2) = = 2 k b(n k) + 2 k k = = 2 n 1 b(1) + 2 n = = 2 n n = 2 n 1
44 (10 september 2018 T02 44 ) Exempel: Växlingsproblemet Antag att vi har mynt/sedlar i följande valörer: 100, 50, 10, 5 och 1. På hur många sätta kan man växla ett visst belopp? Ex: Beloppet 12 kan växlas på 4 sätt: , , och 12 1, Hur kan vi skapa mindre (dvs enklare) problem? Två sätt att skapa mindre problem: Mindre belopp Färre mynt
45 (10 september 2018 T02 45 ) Växlingsproblemet Vi kan dela in mängden möjliga lösningar i två disjunkta mängder: 1. de som inte använder ett visst mynt och 2. de som använder ett visst mynt Alltså: Antalet sätt att växla a kronor med myntsorterna d 1, d 2,..., d n är 1. antalet sätt att växla med mynten d 1, d 2,..., d n 1 plus 2. antalet sätt att växla a d n med mynten d 1, d 2,..., d n
46 (10 september 2018 T02 46 ) Växlingsproblemet Kodskiss: int static count(int a, int n) { return count(a, n-1) + count(a-d[n], n); } Arrayen d med valörerna förutsätts finnas som en klassvariabel. Basfall? a = 0 lyckad växling räkna a < 0 misslyckad växling räkna ej n = 0 misslyckad växling räkna ej
47 (10 september 2018 T02 47 ) Växlingsproblemet Slutligt program: int static count(int a, int n) { if (a == 0) return 1; else if (a < 0 n == 0) return 0; else return count(a, n-1) + count(a-d[n], n); } Förvånansvärt enkelt program för ett icke-trivialt problem! Trädrekursivt med exponentiell tillväxt. Går att motverka.
48 (10 september 2018 T02 48 ) Trädrekursiva algoritmer Brickleken: Tiden växer exponentiellt (Θ(2 n )). Hopplöst för stora n men bästa möjliga. Fibonaccitalen: Tiden växer exponentiellt (Ω(1.6 n )) Hopplöst för stora n men mycket effektivare algoritmer finns. Mergesort och Quicksort: Tiden växer som Θ(n log n). Bästa möjliga generella algoritm! Växlingsproblemet Tiden växer exponentiellt men motmedel finns.
49 (10 september 2018 T02 49 ) Hur vet man om en rekursiv lösning är effektiv? Rekursiva lösningar kan vara mycket effektiva men också mycket ineffektiva Beräkningsarbetet beror på arbetet att dela upp i delproblem, antalet delproblem, delproblemens storlek (ofta avgörande) samt arbetet som krävs för att kombinera lösningarna till delproblemen. Det finns problem som är hopplösa! Trädrekursion är OK under förutsättning att delproblemen är betydligt mindre är ursprungsproblemet.
50 (10 september 2018 T02 50 ) Varför rekursion? Generell problemlösning Lätt att hitta en lösning (när man väl lärt sig tekniken) Lätt att hitta effektiva lösningar Naturligt i många sammanhang ( derivatan av en summa är summan av derivatorna ) Bra på rekursivt definierade strukturer Men: Lätt att hitta hopplöst ineffektiva lösningar
51 (10 september 2018 T02 51 ) Varför använder man begreppen O, Ω och Θ? Enkel karakteristik en algoritms uppförande (tid/utrymme) för stora problem utan detaljer och oberoende av programmeringsspråk, dator,... När använder man O, när använder man Θ och när använder man Ω? Θ säger mest O är en övre begränsning (som inte nödvändigtvis är tät ) Ω är en undre begränsning.
52 (10 september 2018 T02 52 ) Behöver man bry sig om hur effektivt ett program är? Är frågan överhuvud taget relevant när datorerna bli snabbare och snabbare? Ja! Det finns och kommer under överskådlig tid finnas många tillämpningar där frågan är högst relevant! Ett axplock: fysik och teknik : aerodynamik, väderprognoser biologi : bioinformatik, genomsekvensering realtidssystem : robotar, självkörande bilar, basstationer i mobiltelefoni animering : datorspel, filmindustri bildstabilisering vid filmning informationssökning : google
53 (10 september 2018 T02 53 ) Men Viktigare att programmet är korrekt än att det går fort! Offra inte klarhet för små effektivitetsvinster! Offra inte enkelhet för små effektivitetsvinster! Offra inte modifierbarhet för små effektivitetsvinster! Om programmet är för långsamt: Hitta en bättre algoritm!
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 =
Läs merRekursion 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
Läs merRekursion 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
Läs merRekursion 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
Läs merFö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
Läs merSö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
Läs merFÖRELÄSNING 2, TDDC74, VT2018 BEGREPP PROBLEMLÖSNING MED HJÄLP AV FALLANALYS PROBLEMLÖSNING MED HJÄLP AV REKURSION
FÖRELÄSNING 2, TDDC74, VT2018 Begrepp och definitioner (delvis från föreläsning 1) Fallanalys som problemlösningsmetod Rekursivt fallanalys Rekursiva beskrivningar och processer de kan skapa Rekursiva
Läs merFö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
Läs merFö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äs merMagnus 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
Läs merAlgoritmanalys. 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
Läs merAlgoritmer 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
Läs merFö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
Läs merFö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
Läs merIntroduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4
Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa
Läs merProgramkonstruktion 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
Läs merTDDI16 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
Läs merObjektorienterad 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
Läs merSCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall
Rekursiva funktioner Föreläsning 10 (Weiss kap. 7) Induktion och rekursion Rekursiva funktioner och processer Weiss 7.1-3 (7.4, 7.5.3 utgår) Fibonaccital (7.3.4) Exempel: Balansering av mobil (kod se lab
Läs merFö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)
Läs merF2: Algoritmanalys, sökning, sortering, recursive descent Carl Nettelblad
F2: Algoritmanalys, sökning, sortering, recursive descent Carl Nettelblad 2019-04-01 Repetition Kursmål Felsökning (med debugger) Rekursion Säg vad du vill göra Varför skriver vi kod? För att få datorn
Läs merBEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK
FÖRELÄSNING 2 Viss repetition av Fö1 Rekursivt fallanalys Rekursiva beskrivningar BEGREPP HITTILLS Konstant, Namn, Procedur/Funktion, LAMBDA, Parameter, Argument, Kropp, Villkor/Rekursion, Funktionsanrop,
Läs merFö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
Läs merFö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
Läs merTommy 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
Läs merProgrammering 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
Läs merExempel: 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
Läs merFö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
Läs merFö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
Läs merFö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
Läs merAlgoritmer. 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;
Läs merFö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:
Läs mer6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:
6 Rekursion 6.1 Rekursionens fyra principer Problem löses genom: 1. förenkling med hjälp av "sig själv". 2. att varje rekursionssteg löser ett identiskt men mindre problem. 3. att det finns ett speciellt
Läs merRekursion. 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,
Läs merTommy Färnqvist, IDA, Linköpings universitet
Föreläsning Metoder för algoritmdesign TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 7 december 015 Tommy Färnqvist, IDA, Linköpings universitet.1
Läs merObjektorienterad 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
Läs merFö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äs merDatastrukturer 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
Läs merFö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
Läs merFö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
Läs merRekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254
Rekursion Rekursion är en grundläggande programmeringsteknik M h a rekursion kan vissa problem lösas på ett mycket elegant sätt Avsnitt 11 i kursboken: Att tänka rekursivt Att programmera rekursivt i Java
Läs merFö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
Läs merTDDC30. 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
Läs merFö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
Läs merFö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 Uppgifter Söndra och härska (Divide and conquer) Vi stötte på dessa algoritmer när vi tittade
Läs merMetodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer
Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel
Läs merAnmä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
Läs merFö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
Läs merFö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
Läs merÖ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
Läs merFö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 {
Läs merFö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
Läs merTommy 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
Läs merFö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
Läs merif (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
Läs merLö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
Läs merIntroduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner
Introduktion till programmering D0009E Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner
Läs merFöreläsning 13. Dynamisk programmering
Föreläsning 13 Dynamisk programmering Föreläsning 13 Dynamisk programmering Fibonacci Myntväxling Floyd-Warshall Kappsäck Handelsresandeproblemet Uppgifter Dynamisk programmering Dynamisk programmering
Läs merString [] 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
Läs merDatastrukturer. 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
Läs mer3. 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.
Läs merÖvningsuppgifter #11, Programkonstruktion och datastrukturer
Övningsuppgifter #11, Programkonstruktion och datastrukturer Lösningsförslag Elias Castegren elias.castegren@it.uu.se Övningar 1. 1 2. 2 3. Ett binomialträd med rang n har 2 n noder. En binomial heap innehåller
Läs merRekursiva algoritmer sortering sökning mönstermatchning
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 6-7 Rekursiva strukturer rekursiva definitioner rekursiva funktioner rekursiva bevis: induktion - rekursion strukturell
Läs merFö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äs merFö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å
Läs merDatastrukturer, 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
Läs merFö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.
Läs merKlassen 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äs merTENTAMEN 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
Läs merFö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
Läs merFö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
Läs merFö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
Läs merPseudokod Analys av algoritmer Rekursiva algoritmer
Föreläsning 7 Pseudokod Analys av algoritmer Rekursiva algoritmer För att beskriva algoritmer kommer vi använda oss av en pseudokod (låtsas programspråk) definierad i kursboken Appendix C. Vi går igenom
Läs merFö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
Läs merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 4 Anton Grensjö grensjo@csc.kth.se 25 september 215 Anton Grensjö ADK Övning 4 25 september 215 1 / 28 Översikt Kursplanering F9: Dynamisk programmering
Läs merFöreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...
Föreläsning 9 Intervallhalveringsmetoden Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion Tidskomplexitet Procedurabstraktion Representation Bra om ni läst följande avsnitt i AS: Procedures
Läs merFö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äs merSortering. 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.
Läs merLägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.
Tentamen Programmeringsteknik II 2017-08-24 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
Läs merFöreläsning 9 Exempel
Föreläsning 9 Exempel Intervallhalveringsmetoden DA2001 (Föreläsning 9) Datalogi 1 Hösten 2013 1 / 24 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod DA2001 (Föreläsning 9) Datalogi
Läs merSORTERING 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
Läs merLä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
Läs merFö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
Läs merAtt deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)
Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet
Läs merTDDC30. 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,
Läs merTDDC30. 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,
Läs merDagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.
(16 februari 2016 F5.1 ) Dagens text Programmeringsteknik Mer om Scanner-klassen Dialogrutor (klassen JOptionPane) Bubbelsortering ArrayList Omslagsklasser Arbetsexempel (16 februari 2016 F5.2 ) Pokertärningar
Läs merTentamen 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
Läs merAlgoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T
Algoritmer och datastrukturer H I 1 0 2 9 HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T Föreläsning 1 Inledande om algoritmer Rekursion Stacken vid rekursion Rekursion iteration Möjliga vägar
Läs merProgrammering 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
Läs merKapitel 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å
Läs merLö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
Läs merFö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,
Läs merQuicksort. 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
Läs merFö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
Läs merI en matchning ligger varje hörn i högst en kant. I en stig ligger varje hörn i högst två kanter.
26.2-9 Antag att rätt lösning är att dela upp V i V 1 och V 2 (V 1 V 2 =, V 1 V 2 = V ). Antal kanter vi måste skära är då det minsta snittet mellan v 1 och v 2, där v 1 är ett godtyckligt hörn i V 1 och
Läs merDagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.
(1 oktober 2017 F5 1 ) Dagens text Programmeringsteknik Mer om Scanner-klassen Dialogrutor (klassen JOptionPane) Bubbelsortering ArrayList Omslagsklasser Arbetsexempel (1 oktober 2017 F5 2 ) Pokertärningar
Läs merIntroduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner
Introduktion till programmering Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner med
Läs merFö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
Läs mer