Några saker till och lite om snabbare sortering

Storlek: px
Starta visningen från sidan:

Download "Några saker till och lite om snabbare sortering"

Transkript

1 Några saker till och lite om snabbare sortering GOTO hemskt eller ett måste? CASE enkla val över diskreta värdemängder Snabb sortering principer Snabb sortering i Scheme och Pascal QuickSort (dela städat slå ihop) Mergesort (dela slå ihop städat) Andra snabbsorteringar översikt DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

2 GOTO och lägen PROGRAM test; LABEL 999; { Deklaration av läge } GOTO 999; { hoppa till läge 999 } : { ett läge i programmet }... { Städning...} END. DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

3 GOTO och lägen (2) GOTO innebär att nästa sats som exekveras är den sats som står efter det läge som man hoppar till. Man får hoppa ut ur block, men aldrig in i block! För att få läsliga program: Hoppa bara framåt i programmet, aldrig bakåt. Pascal har styrstrukturer som klarar alla de fall där man kan tänka sig att hoppa. Det finns egentligen bara ett tillfälle där hopp är motiverat: Då ett så allvarligt fel inträffar i programmet, att man måste avbryta körningen. Man bör då hoppa till en felhanteringsprocedur som ger en felutskrift och sedan avvecklar körningen ( Graceful breakdown ). DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

4 GOTO och lägen (3) PROGRAM test; LABEL 999;... PROCEDURE error; BEGIN Writeln( Allvarligt fel i körningen! Starta om programmet ); GOTO 999;... BEGIN... IF fel THEN error;...{fortsätt bearbetningen} 999: END. DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

5 CASE IF i IN mängd1 THEN s1 ELSE IF i IN mängd2 THEN s2... kan skrivas som CASE i OF lista1: s1; { mängd1 skriven som en diskret uppräkning } lista2: s2; { mängd2 skriven som en diskret uppräkning }... där listorna måste vara disjunkta och endast innehålla konstanter av diskret typ. DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

6 CASE (2) Ex: CASE ch OF 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 : val := Ord(ch) - Ord( 0 ); A, B, C, D, E, F : val := Ord(ch) - Ord( A ) + 10; a, b, c, d, e, f : val := Ord(ch) - Ord( a ) + 10; I de flesta Pascalversioner har denna utökats med ett slaskalternativ : ELSE, OTHERS eller OTHERWISE CASE ch OF 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 : val := Ord(ch) - Ord( 0 ); A, B, C, D, E, F : val := Ord(ch) - Ord( A ) + 10; a, b, c, d, e, f : val := Ord(ch) - Ord( a ) + 10; OTHERWISE error DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

7 CASE (3) Ex: Uppräknade typer utskrift TYPE day = (mon, tue, wed, thu, fri, sat, sun); PROCEDURE writeweekday(aday: day); BEGIN CASE aday OF mon: Write( måndag ); tue: Write( tisdag ); wed: Write( onsdag ); thu: Write( torsdag ); fri: Write( fredag ); sat: Write( lördag ); sun: Write( söndag ) END DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

8 CASE (4) Ex: Uppräknade typer inmatning FUNCTION readweekday: day; VAR aday: Char; BEGIN ReadLn(aDay); CASE aday OF m, M : readweekday := mon; i, I : readweekday := tue; o, O : readweekday := wed; t, T : readweekday := thu; f, F : readweekday := fri; l, L : readweekday := sat; s, S : readweekday := sun OTHERWISE BEGIN Write( du måste ange en veckodag! ); readweekday := readweekday END END DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

9 Snabbare sortering Principer I de tre långsamma metoderna vi gått igenom byter man i någon mening hela tiden plats på element intill varandra För att sortera snabbare måste man byta plats över längre avstånd Vi har då minst två metoder för att göra dessa byten Grovsortera i mindre och mindre delar tills vi kan slå ihop resultaten Dela utan kontroll och slå ihop med 100% kontroll Vi ska titta på ett exempel för var och en av metoderna Quicksort, som följer den första principen genom 1. Välj en pivot (uttalas pivå ) 2. Flytta allt som är pivot till vänster om pivot och allt som är > pivot till höger om pivot 3. pivot står rätt så gör om på delarna tills allt står rätt Mergesort, som följer den andra genom 1. Dela ner tills man har listor som är 1 element långa 2. Gör parvis merge på delarna tills man har bara en lista DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

10 Quicksort Förklaring av algoritmen 1. Välj en pivot (enklast möjliga strategi = första elemene 2. Sätt en pekare på första elementet och en på sista 3. Flytta förstaelementpekaren till vi hittar ett element som är > pivot 4. Flytta sistaelementpekaren till vi hittar ett element som är pivot 5. byt plats på de funna elementen 6. fortsätt rekursivt med att sortera element pivot och sedan element > pivot Jag tänker mig samma definitioner som tidigare då vi diskuterat sökning Quicksort lämpar sig bäst för stora kontinuerliga listor DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

11 Quicksortalgoritmen PROCEDURE quicksort(var v: vector; left, right: index); VAR pivot: Integer; FUNCTION partition(var v: vector; j, k: index): index; BEGIN swap(v, (j + k) DIV 2, j); REPEAT REPEAT j := Succ(j) UNTIL (j > k) OR (v[j] > v[left]); REPEAT k := Pred(k) UNTIL v[k] <= v[left]; IF j < k THEN swap(v, j, k); UNTIL j > k; swap(v, left, k); partition := k; BEGIN IF left < right THEN BEGIN pivot := partition(v, left, right + 1); quicksort(v, left, pivot - 1); quicksort(v, pivot + 1, right) END DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

12 Quicksort, körexempel (9) (2) (22) (15) DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

13 Mergesortalgoritmen Mergesort lämpar sig bäst för diskontinuerliga listor och filer. Idén är enkel: Om man har redan sorterade listor samsorteras dessa enligt: 1. Jämför första elementen i listorna och tag det minsta av dem tills den ena listan är slut 2. Häng på den lista som inte tog slut TYPE keytype = Integer; elptr = ^element; element = RECORD key : keytype; next : elptr listptr = ^list; list = RECORD first : elptr END DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

14 Mergesortalgoritmen (2) merge förbered PROCEDURE merge(l1, L2 : listptr; VAR L3 : listptr); VAR e1, e2, first, last: elptr; BEGIN e1 := L1^.first; e2 := L2^.first; IF e1^.key < e2^.key THEN BEGIN first := e1; e1 := e1^.next END ELSE BEGIN first := e2; e2 := e2^.next last := first; DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

15 Mergesortalgoritmen (3) merge kör... WHILE (e1 <> NIL) AND (e2 <> NIL) DO BEGIN IF e1^.key < e2^.key THEN BEGIN last^.next := e1; e1 := e1^.next END ELSE BEGIN last^.next := e2; e2 := e2^.next last := last^.next IF e1 = NIL THEN last^.next := e2 ELSE last^.next := e1; L3^.first := first { merge } DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

16 Mergesortalgoritmen (4) För att det ska fungera måste vi först dela listan i delar som i sin tur sorteras: PROCEDURE split(l1, L2, L3 : listptr); VAR tmpel : elptr; BEGIN IF NOT empty(l1) THEN BEGIN tmpel := L1^.first; L1^.first := L1^.first^.next; tmpel^.next := L2^.first; L2^.first := tmpel; split(l1, L3, L2) END DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

17 Mergesortalgoritmen (5) mergesort mergesort blir då PROCEDURE mergesort(l : listptr); VAR L1, L2 : listptr; BEGIN IF length(l) > 1 THEN BEGIN L1 := createlist; L2 := createlist; split(l, L1, L2); mergesort(l1); mergesort(l2); merge(l1, L2, L); DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

18 Några kommentarer Jag har inte varit smart, bara visat metodiken Man kan effektivisera mergesort genom att bara hantera elementpekare. Man kan effektivisera quicksort genom en enkel stack och avveckla rekursionen Mergesort är alltid snäll, quicksort kan spåra ur (men det är ovanligt) Man kan använda långsamma metoder på korta listor, och bara använda de tyngre men snabbare på långa listor. Det finns flera metoder, en rolig (men ganska obegriplig) är heapsort som alltid är snäll och n log n quicksort < mergesort < heapsort <... < utbytessortering DA2001 (Föreläsning 21) Datalogi 1 Hösten / 18

Några saker till och lite om snabbare sortering

Några saker till och lite om snabbare sortering Några saker till och lite om snabbare sortering Generellt om avbrott Generera avbrott Snabb sortering principer Snabb sortering i Scheme och Python QuickSort (dela städat slå ihop) Mergesort (dela slå

Läs mer

Sökning och sortering

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

Läs mer

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. 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

Läs mer

Funktioner, Procedurer och Parametrar. Funktioner, Procedurer och Parametrar... Funktioner, Procedurer och Parametrar procedurspecifikation

Funktioner, Procedurer och Parametrar. Funktioner, Procedurer och Parametrar... Funktioner, Procedurer och Parametrar procedurspecifikation Funktioner, Procedurer och Parametrar I delar vi upp underprogram i två grupper : Funktioner: lämnar alltid ett värde som resultat Funktionsnamnet får ett värde i funktionen genom: funktionsnamn := expr;

Läs mer

Spelschema för årets fotbollsmästerskap! island tyskland Söndag 14/7 Växjö Arena, Växjö. Söndag 14/7 Kalmar Arena, Kalmar

Spelschema för årets fotbollsmästerskap! island tyskland Söndag 14/7 Växjö Arena, Växjö. Söndag 14/7 Kalmar Arena, Kalmar ! Onsdagen 10/7 Onsdagen 10/7 Torsdag 11/7 Torsdag 11/7, Fredag 12/7 Fredag 12/7 Lördag 13/7 Lördag 13/7 Söndag 14/7 Söndag 14/7 Måndag 15/7 Måndag 15/7 Tisdag 16/7 Tisdag 16/7 Onsdag 17/7 Onsdag 17/7

Läs mer

Ordnad lista. Listor... Ordnad lista... Ordnad lista typer

Ordnad lista. Listor... Ordnad lista... Ordnad lista typer Listor... Ordnad lista Hur blir det om man skall sätta in och ta ut mitt i listan? Hur blir det om vi förutom referenser framåt också har referenser bakåt? Kan vi tänka oss annan organisation än linjära

Läs mer

Standardfilerna Input och Output. Filer... Filer... vanlig utbyggnad för ökad dynamik. Filer... filtyper

Standardfilerna Input och Output. Filer... Filer... vanlig utbyggnad för ökad dynamik. Filer... filtyper Standardfilerna Input och Output... Standardfilerna Input och Output är textfiler av typen TEXT (som bara finns för filer). Innehållet är av typen Char och filerna är strukturerade i form av rader. En

Läs mer

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Datalogi, grundkurs 1. Lösningsförslag till tentamen Datalogi, grundkurs 1 Lösningsförslag till tentamen 6 maj 2000 1. För att proceduren sortera ska fungera som tänkt kan den se ut på följande sätt: const min = 1; max = 3; type tal = integer; index = min..max;

Läs mer

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

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

Läs mer

SORTERING OCH SÖKNING

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

Läs mer

Poster... Poster. Poster... Poster...

Poster... Poster. Poster... Poster... Poster Vi har ofta behov av att behandla klumpar av data som i sig är inhomogena men sett över ett helt register har klumparna lika struktur. TYPE car = RECORD model : 1900..2000; ndoors : 2..5; weight

Läs mer

Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet

Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet Repetition Introduktion Repetition i Exemplen fac Orginalet I Scheme använde vi rekursion för all slags repetition. Efterom Scheme är ett funktionellt språk återsänder alla språkkonstruktioner ett värde

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

Pascal... Pascal. Pascal... Pascal...

Pascal... Pascal. Pascal... Pascal... ... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken

Läs mer

Sortering. Brute-force. Sortering Ordna element enligt relation mellan nyckelvärden

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äs mer

Kontinuerliga listor. Fält (listor) Kontinuerliga listor... Kontinuerliga listor...

Kontinuerliga listor. Fält (listor) Kontinuerliga listor... Kontinuerliga listor... Fält (listor) Kontinuerliga listor En lista av värden 2 3 4 5 6 7 8 9... kan naturligtvis representeras av tal1, tal2, tal3,... men det finns då ingen möjlighet att välja element utan att explicit ange

Läs mer

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse GRUNDER I VHDL Innehåll Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse KOMPONENTMODELL Modell för att beskriva komponenter Externt interface Intern funktion

Läs mer

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Typsystem. Typsystem... Typsystem... Typsystem... 2 * Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och

Läs mer

Magnus Nielsen, IDA, Linköpings universitet

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

Läs mer

Imperativ programmering. Föreläsning 2

Imperativ programmering. Föreläsning 2 Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.

Läs mer

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-20 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får

Läs mer

Funktionell programmering DD1361

Funktionell programmering DD1361 Funktionell programmering DD1361 Tupler Två eller fler (men ändligt) antal element. Elementen kan vara av olika typer. Ex: (1,2) :: (Integer, Integer) (( 2, hejsan ), True) ::? Tupel med två element ->

Läs mer

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. 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 mer

Sortering. Föreläsning 12 Innehåll. Sortering i Java. Sortering i Java Exempel. Sortering

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.

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö [email protected] 9 oktober 2015 Anton Grensjö ADK Övning 6 9 oktober 2015 1 / 23 Översikt Kursplanering Ö5: Grafalgoritmer och undre

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö [email protected] 4 oktober 2017 1 Idag Algoritmkonstruktion (lite blandat) Redovisning och inlämning av labbteori 3 2 Uppgifter Uppgift

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

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

Läs mer

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

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

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. 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 mer

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

SCB :-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 mer

Språket Python - Del 1 Grundkurs i programmering med Python

Språket Python - Del 1 Grundkurs i programmering med Python Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR

Läs mer

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

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

Läs mer

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. 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 mer

Tentamen Grundläggande programmering

Tentamen Grundläggande programmering Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:

Läs mer

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Programspråkslingvistik. Sista delen av kursen. Ett programspråk Sista delen av kursen Programspråkslingvistik handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk

Läs mer

Föreläsning 5: Dynamisk programmering

Föreläsning 5: Dynamisk programmering Föreläsning 5: Dynamisk programmering Vi betraktar en typ av problem vi tidigare sett: Indata: En uppsättning intervall [s i,f i ] med vikt w i. Mål: Att hitta en uppsättning icke överlappande intervall

Läs mer

Vecka:1 Måndag Tisdag Onsdag Torsdag Fredag Lördag Söndag. Info: Färgade block - Bokade aktiviteter Fria block - Lediga tider för självträning

Vecka:1 Måndag Tisdag Onsdag Torsdag Fredag Lördag Söndag. Info: Färgade block - Bokade aktiviteter Fria block - Lediga tider för självträning Vecka:1 Måndag Tisdag Onsdag Torsdag Fredag Lördag Söndag Datum: 02-jan 03-jan 04-jan 05-jan 06-jan 07-jan 08-jan 09:00 10:00 Fria block - Lediga tider för självträning och lägg i den vita brevlådan! 12:00

Läs mer

Datalogi, grundkurs 1 Övningsuppgifter i Pascal. Serafim Dahl, Carina Edlund, Kjell Lindqvist m.fl.

Datalogi, grundkurs 1 Övningsuppgifter i Pascal. Serafim Dahl, Carina Edlund, Kjell Lindqvist m.fl. Datalogi, grundkurs 1 Övningsuppgifter i Pascal Serafim Dahl, Carina Edlund, Kjell Lindqvist m.fl. Hösten 2010 Datalogi, grundkurs 1, hösten 2009 1 1. Skriv en funktion som återsänder ett heltal som läses

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

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

Läs mer

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c) Programmönster: # Listan som sekvens, Rekursiv process Enkel genomgång av sekvens (element på toppnivån i en lista)) TDDC60 Programmering: abstraktion och modellering Föreläsning 5 Rekursiva och iterativa

Läs mer

6 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. 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 mer

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

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

Läs mer

Föreläsning 13. Rekursion

Föreläsning 13. Rekursion Föreläsning 13 Rekursion Rekursion En rekursiv metod är en metod som anropar sig själv. Rekursion används som alternativ till iteration. Det finns programspråk som stödjer - enbart iteration (FORTRAN)

Läs mer

Dugga Datastrukturer (DAT036)

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

Läs mer

Abstraktion. Abstraktion... Abstraktion... Abstraktion...

Abstraktion. Abstraktion... Abstraktion... Abstraktion... Abstraktion Inom programmeringstekniken används två former av abstraktion dataabstraktion och programabstraktion. Dataabstraktion handlar om aggregat för att gruppera samhörande data. Programabstraktion

Läs mer

Sätt att skriva ut binärträd

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äs mer

Sökning. Viktiga algoritmer sökning och sortering. Sökning i en oordnad tabell:

Sökning. Viktiga algoritmer sökning och sortering. Sökning i en oordnad tabell: Viktiga algoritmer sökng och sorterg När man sparar data (formation) gör man det alltid utifrån något behov av att senare använda det man har sparat. Det kan ju vara av juridiska krav på dokumentation

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016

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 mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

Sommarschema 2013. Vecka 24. Måndag 10/6 Tisdag 11/6 Onsdag 12/6 Torsdag 13/6 Fredag 14/6 Lördag 15/6 Söndag16/6 06.30-09.

Sommarschema 2013. Vecka 24. Måndag 10/6 Tisdag 11/6 Onsdag 12/6 Torsdag 13/6 Fredag 14/6 Lördag 15/6 Söndag16/6 06.30-09. Vecka 24 Måndag 10/6 Tisdag 11/6 Onsdag 12/6 Torsdag 13/6 Fredag 14/6 Lördag 15/6 Söndag16/6 15.00-16.55 Gravidyoga 17.00-19.00 Therapeutic Series Part 2: The Core 07.30-16.00 Therapeutic Series Part 2:

Läs mer

Twincat: PLC Control

Twincat: PLC Control Dokument Förklaring Dat. Revision KI-221-003-003 Kom igång med trukturerad Text 080402 1.0 Twincat: PLC Control Kom igång med Strukturerad Text (ST) programmering 1. Kod exempel. a. Exemplen som demonstreras

Läs mer

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning 1 Dagens föreläsning Programmering i Lisp - Block, räckvidd - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch

Läs mer

Föreläsning 5. Rekursion

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

Läs mer

Grundkurs Programmering

Grundkurs Programmering HI124 Grundkurs Programmering F7b: Funktioner på djupet! A. Cajander, STH 6 1 5 42 3.14f a float char short circuit order of subexp eval. Dagens fokus = + - * / % ++ -- + - * / % & ^ > ==!= > < >=

Läs mer

KTH, NADA, Vahid Mosavat. 1. Flervalsfrågor (5p)

KTH, NADA, Vahid Mosavat. 1. Flervalsfrågor (5p) KTH, NADA, Vahid Mosavat 2D1343, TENTAMEN I DATALOGI FÖR ELEKTRO Onsdagen den 31 mars 2004 kl 8-13 Maxpoäng: tenta+bonus = 50+7. Betygsgränser: 25 poäng ger trea, 35 ger fyra, 45 ger femma. Otydliga/svårlästa

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

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:

Läs mer

Föreläsning 5 Innehåll

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

Läs mer

Lösningar Datastrukturer TDA

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

Läs mer

28 28S Stockholms östra Österskär

28 28S Stockholms östra Österskär Giltighetstid december 20 18 juni 2015 samt 8 november 2015 10 januari 20 S Noter n Endast natt mot lördag, söndag och helgdag. Måndag fredag S S S S S S 05. 05. 05.15 05.17 05.18 05.20 05. 05. 05. 05.

Läs mer

10% Ps. Fråga Anna i butiken om våra varor. Hon rider själv och vet allt om vad häst och ryttare behöver. ...

10% Ps. Fråga Anna i butiken om våra varor. Hon rider själv och vet allt om vad häst och ryttare behöver. ... Skriv ut på A4-papper. OM DU VILL HA VÅR TRYCKTA HEMSKICKAD, Skriv ut på A4-papper. OM DU VILL HA VÅR TRYCKTA HEMSKICKAD, Skriv ut på A4-papper. OM DU VILL HA VÅR TRYCKTA HEMSKICKAD, Skriv ut på A4-papper.

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan [email protected] Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer