Programmering fortsättningskurs
|
|
- Maja Lind
- för 9 år sedan
- Visningar:
Transkript
1 Programmering fortsättningskurs Philip Larsson Innehåll 1 Träd Binära träd Strikt binärt träd Binärt sökträd Balanserade binära sökträd Traversering 2 3 Interfacet Set 2 4 Interfacet Comparator 3 5 Interfacet Map 4 6 Hashtabell 4 7 Rekursiva metoder 6 8 Skyddsnivåer 6 9 Överskuggning och överlagring 6 10 Exceptions 7 11 Sortering Mergesort Quicksort Heapsort Insättningssortering (insertion sort) Urvalssortering (selection sort) Sammanfattning sortering Lista Kö Prioritetskö Stack Heap 13 1
2 16 Interfaces Java Collections Framework Klassen Object Algoritmers tidsåtgång Tidskomplexitet för några algoritmer Träd Träd är en icke linjär struktur. Ett träd består av en huvudnod (roten) som har noll eller flera subträd. En nod som saknar barn kallas löv. En gren är en serie noder förbundna med varandra. 1.1 Binära träd Ett binärt träd är ett träd där varje nod har högst två barn. 1.2 Strikt binärt träd Ett strikt binärt träd är ett träd där varje nod har noll eller två barn. 1.3 Binärt sökträd Ala värden som finns i vänster subträd är mindre än värdet som finns i föräldern. Alla värden som finns i höger subträd är större än värdet som finns i föräldern. Dubbletter tillåts inte! 1.4 Balanserade binära sökträd Ett binärt träd är balanserat om det för varje nod i trädet gäller att höjdskillnaden mellan dess båda subträd är högst ett. 2
3 2 Traversering Att genomsöka alla noderna i ett träd kallas att traversera trädet. Detta kan göras genom post-, pre- eller inordertraversering. Preorder: Först roten, sedan vänster subträd i preorder, därefter höger subträd i preorder. M, H, A, K, S, N, T Inorder: först vänster subträd i inorder, sedan roten och därefter höger subträd i inorder (detta blir växande ordning i ett binärt sökträd). A, H, K, M, N, S, T Postorder: först vänster subträd i postorder, sedan höger subträd i postorder och därefter roten. A, K, H, N, T, S, M 3 Interfacet Set En mängd (Set) får inte innehålla några dubbletter. Interfacen Collection och Set har i Java samma operationer. Skillnaden är att i Set får inga dubbletter förekomma. Set får innehålla null element, men bara ett null-element, pga dubblettförbudet. Klasser som implementerar interfacet Set: TreeSet (balanserat träd) 3
4 HashSet (använder hashtabell) Några metoder som kan vara bra att känna till: boolean add(e obj) boolean addall(collection<e> coll) boolean contains(object obj) Lägger till obj om det inte redan finns Lägger till alla element om de inte redan finns, returnerar true om set:et är ändrat. Returnerar true om set:et innehåller ett element som är identiskt(equal) till obj 4 Interfacet Comparator public interface Comparator<T> { /** *Compares its two arguments for order. *Returns a negative integer, zero, or a positive *integer as the first argument is less than, *equal to, or greater than the second. */ int compare(t e1, T e2); Comparator är ett interface med en metod compare som ska användas för att jämföra två olika objekt av typen T. När man anropar sort skickar man med ett objekt av en klass som implementerar Comparator. Inuti sort används compare för jämförelser En klass som implementerar interfacet Comparable implementerar en metod compare för jämförelse. Comparator kan vara bra när man vill jämföra objekt av en klass på flera olika sätt. Ex: En klass Person. Vi vill både kunna sortera personer i alfabetisk ordning och efter personnummer. public class Person { private String name; private String pnbr;... 4
5 public class NameComparator implements Comparator<Person> { public int compare(person p1, Person p2) { return p1.getname().compareto(p2.getname()); /* This tree will be sorted by name */ TreeSet<Person> nametree = new TreeSet<Person>(new NameComparator()); 5 Interfacet Map Element är tvådelade - en nyckel(key) med tillhörande värde(value). Nyckeln är unik, men inte värdena. Klasser som implementerar interfacet Map: TreeMap (implementerar interfacet SortedMap, dvs elementen kommer att vara sorterade) HashMap (använder en hashtabell) Några metoder som kan vara bra att känna till: V get(object key) V put(k key, V value) V remove(object key) Returnerar värdet associerat med key. Returnerar null om det inte finns. Associerar key med value i denna mapen. Dvs lägger till i mapen. Tar bort objektet med nyckeln key i mapen. 6 Hashtabell En hashtabell är en datastruktur där data sparas tillsammans med en nyckel. Positionen i strukturen beräknas med en hashfunktion. Ofta behöver man en datastruktur som kan hantera både insättningar och sökningar effektivt. 5
6 Sluten hashtabell: En vektor används för att lagra elementen. Hanterar kollisioner med t.ex. linjär teknik eller kvadratisk teknik. Öppen hashtabell: En vektor av listor. Kolliderande objekt placeras i samma lista. Exempel på på sätt att hantera kollisioner: Linjär teknik: första lediga plats efter. Problem med linjär teknik: Ger upphov till primär klustring i tabellen. Objekt vars hashkoder är nära ett vanligt hashvärde kommer att drabbas av kollisioner och bygga ut klustret. Stora kluster gör sökningen långsam. Kvadratisk teknik: undviker primär klustring (att alla värden samlas intill varandra i vektorn). Funkar inte nästa plats 1 2 hoppar den till 2 2 steg bort, funkar inte det går den 3 2 osv. Alltså: Primärt hashvärde = phash = värdet där den egentligen borde läggas in. phash, phash + 1 2, phash + 2 2, phash + 3 3,..., phash + i 2 Man måste skugga hashcode och equals i den klass vars objekt ska fungera som en nyckel i en hashtabell. I Javas klassbibliotek används öppna hashtabeller i klasserna HashSet och HashMap. Fyllnadsgraden i en hashtabell är antal element antal tabellplatser. Om man skall skriva en for-each sats över en hashtabell: Set<String,Object> map = new Hashmap<String,Object>(); for (Map.Entry<String, Object> entry : map.entryset()) { String key = entry.getkey(); Object value = entry.getvalue(); //... Observera att element i en hashtabell inte är sorterade. Ett elements plats i tabellen bestäms av dess hashvärde. 6
7 7 Rekursiva metoder En rekursiv metod måste ha: En eller flera parametrar Ett eller flera basfall Ett eller flera rekursiva anrop. De rekursiva anropen måste leda till att ett basfall så småningom nås. 8 Skyddsnivåer public: Attribut och metoder som vi skriver public framför kan anropas och användas varifrån som helst. Ingen markering: Attribut och metoder som vi inte skriver något framför kan bara anropas och användas av andra klasser i samma katalog. private: Attribut och metoder som vi skriver private framför kan bara anropas och användas inifrån den egna klassen. protected: Klassen själv, andra klasser i samma paket, och this i subklasser har tillgång till dem. 9 Överskuggning och överlagring Överskuggning innebär att vi ersätter en gammal (ärvd) operation med en ny som har samma signatur - vi får alltså ingen ny operation. Överlagring innebär att vi lägger till en ny operation som har samma namn som en ärvd operation, men annan signatur. (t.ex olika antal parametrar eller olika typer på sina parametrar) Vi kan även använda den överskuggade operationen när vi överskuggar med hjälp av super. public void forward(int n){ super.forward(n); count += n; 7
8 Vi skriver super.forward(n) för att få kompilatorn att förstå att det är operationen forward(int) i superklassen som skall anropas. Om vi hade skrivit forward(int) hade vi anropat oss själva - sådana anrop kallas rekursiva och är väldigt användbara i många sammanhang, men här hade det bara inneburit at operationen hade anropat sig själv tills minnet tar slut (och vi får java.lang.stackoverflowerror). 10 Exceptions Det finns två slag av Exceptions: Unchecked Exceptions Ð används då felet beror på programmeraren Ex: NullPointerException eller ArrayIndexOutOfBoundsException Checked Exceptions Ð används då felet inte beror på programmeraren Ex: FileNotFoundException om man försöker öppna en fil som inte finns När man anropar en metod som genererar en checked exception måste man ta hand om det. Normalt fångar man det i en try-catch-sats: Scanner scan = null; try { // try to open file filename scan = new Scanner(new File(fileName)); catch (FileNotFoundException e) { System.err.println("Couldn t open file " + filename); System.exit(1);... use scan... Om exception inträffar, avbryts exekveringen av satserna i try-blocket och satserna i catch-blocket exekveras. I satsen catch(exception e) kan t.ex. följande metoder användas för att få mer information: e.printstacktrace(); som skriver ut information om raden där felet inträffat och den/de metodanrop som lett till denna rad. e.getmessage(); som returnerar en sträng med meddelande om felets art. 8
9 Generera egna exceptions: throw new IllegalArgumentException("amount to deposit < 0"); Mönstret är: throw new ExceptionClass(); throw new ExceptionClass(message); Detta gör att exception-objekt skapas, exekvering av metoden avbryts. Javasystemet letar efter fångade catch-block. Exempel: /** * Deposits the specified amount. * pre: The specified amount is >= 0 * post: The specified amount is added to balance n The amount to deposit IllegalArgumentException if the specified amount is < 0 */ public void deposit(int n) { if (n < 0) { throw new IllegalArgumentException("amount to deposit < 0"); balance = balance + n; 11 Sortering Varför sortera? Göra sökning enklare. Förenkla vissa algoritmer Mergesort En söndra och härda-algoritm. Först sorteras vänstra halvan, sedan den högra. Sedan samsorteras de båda sorterade halvorna. Mergesort har tidskomplexiteten O(n log n) oavsett indata. 9
10 11.2 Quicksort Välj ut ett element (förslagsvis i mitten), detta element kallas för pivotelementet. Flytta element som är mindre än pivotelementet till vänster om det och flytta element som är större till höger. Quicksort har tidskomplexiteten O(n log n), men O(n 2 ) i värsta fall Heapsort Heapsort har tidskomplexiteten O(n log n), är vektorn sorterad tar det n för att sätta in och log n för att ta ut, alltså ändå O(n log n) Insättningssortering (insertion sort) Element på plats k i vektorn sätts in på rätt plats bland de redan sorterade elementen på plats 0 (k 1). Tidskomplexiteten är O(n 2 ) Insättningssortering är bra om vektorn nästan är sorterad från början Urvalssortering (selection sort) Den kanske enklaste metoden att sortera är att börja med att leta upp det minsta värdet i vektorn och sätta in det först. Därefter letar vi upp det näst minsta elementet (som är det minsta av de återstående elementen) och sätter in det näst först, och så fortsätter vi att leta upp och sätta in det tredje minsta, fjärde minsta, etc, tills alla element är i rätt ordning. public static void selectionsort(int[] a, int n) { for (int i = 0; i < n; i++) { int smallest = i; for (int k = i+1; k < n; k++) { if (a[k] < a[smallest]) { smallest = k; int tmp = a[i]; a[i] = a[smallest]; a[smallest] = tmp; 10
11 För att få ett mått på hur effektiv denna metod är kan vi räkna antalet jämförelser som behövs för att sortera en vektor med n tal. I första varvet i den yttre for-loopen gör vi n 1 jämförelser (de görs inuti den inre forloopen), i det andra varvet i den yttre for-loopen gör vi n 2 jämförelser, etc. Totalt får vi: T (n) = (n 1) + (n 2) = n(n 1) 2 = O(n 2 ) jämförelser. dvs om vi dubblar antalet element i vektorn så krävs det ungefär fyra gånger fler jämförelser för att sortera elementen Sammanfattning sortering Urvalssortering O(n 2 ) Långsam för stora n. Efter k pass är de k minsta sorterade. Insättningssortering O(n 2 ) Heapsort O(n log n) Mergesort O(n log n) Quicksort O(n log n) Bra för nästan sorterad indata (linjär då). Kan utformas så att inget extra minnesutrymme krävs. I praktiken långsammare än Quicksort. Efter k pass är de k största elementen sorterade. Kräver extra minnesutrymme. I praktiken långsammare än Quicksort. Kan utformas iterativa och användas för att sortera element som finns p Men O(n 2 ) i värsta fall. Inget extra minnesutrymme för temporär vektor krävs. Bäst av de nämnda i praktiken om man väljer pivot och utför partionering förnuftigt. 12 Lista Implementering av listor: Vektor, föregångare och efterföljare finns naturligt. Länkad datastruktur. Består av noder som har information om efterföljande element(eventuellt också föregående = dubbellänkad lista) En lista är en ordnad följd av element. Det finns en före-efter-relation mellan elementen 11
12 Begrepp som första element i listan, efterföljaren till visst element i listan är meningsfulla. Det finns alltså ett positionsbegrepp. Vi kan skapa en Lista med interfacet list: List<String> names; och på så vis vänta med att välja vilken typ av lista vi vill ha. Två exempel på olika klasser som implementerar List. ArrayList, som är särskilt bra på att snabbt hämta värden med getoperationen. Insättningar bör man bara göra sist i listan, då insättningar i andra positioner orsaker flyttningar av element. LinkedList, som är särskilt bra på att sätta in och ta bort element i början av listan. Vi skapar en lista såhär: List<String> names = new ArrayList<String>(); Observera: // works but considered ugly: ArrayList<String> names = new ArrayList<String>(); // better! : List<String> names = new ArrayList<String>(); 13 Kö En kö kallas även FIFO-lista. First In First Out. Insättningar göras alltid sist i följden, och bortagning avser alltid första elementet. Analogi: En (vanlig) kö när man handlar mat på ICA... Några metoder som kan vara bra att känna till: boolean offer(e item) Sätter in item sist i kön. E poll() peek Tar bort och returnerar första elementet i kön Returnerar första elementet i kön (utan att ta bort det). 12
13 13.1 Prioritetskö En prioritetskö är en samling element där varje element har en prioritet (som används för att jämföra elementen med). Elementen plockas ut i prioritetsordning till skillnad mot en vanlig kö där elementen plockas ut i den ordning de satts in i kön. De operationer man ska kunna göra på en prioritetskö är sätta in element. ta reda på det högst prioriterade elementet (minsta elementet). ta bort det högst prioriterade elementet (minsta elementet). Det finns inget speciellt interface för prioritetsköer. Man använder interfacet Queue<E>. 14 Stack En stack kallas även LIFO-lista. Last In First Out. Operationer sker på toppen av stacken, dvs. nya element läggs till längst upp, och element tas bort längst upp. Analogi: En tallriks dispenser, en hög med papper. 13
14 Några metoder som kan vara bra att känna till: void push(e obj) Lägger obj överst på stacken. E pop() E peek() boolean isempty() Tar bort och returnerar översta elementet från stacken. Returnerar första elementet i kön (utan att ta bort det). Undersöker om stacken är tom. 15 Heap Heap - ett komplett binärt träd där varje nod innehåller ett element som är barnens element. Alltså: Trädets grenar är så lika långa som möjligt. I fall det inte är möjligt så fylls den nedersta nivån på från vänster (vänsterbalanserat). För varje nod gäller det att roten innehåller det minsta elementet. En heap kan med fördel lagras i en vektor. Roten finns på plats 0. Barnen till noden på plats i finns på platserna 2i + 1 och 2i + 2 i vektorn. Noden på plats i har alltså sin förälder på plats (i 1)/2. Offer (insättning i heap) görs genom att: Nya element placeras på första lediga plats i vektorn. Detta ger rätt form på trädet. Sedan byten uppåt tills rätt ordning. 14
15 16 Interfaces Ett interface(svenska: gränssnitt) är som ett skal med metoder som den som implementerar måste använda. En klass kan implementera flera interface. Alla metoder är även implicit publika. public interface InterfaceName{ /** Returns size */ int getsize(); public class ClassName implements InterfaceName{ // attributs, methods, constructor as usual, but all methods in InterfaceName must be included Om det skiljer mycket mellan metoderna i klasserna så använd interface istället för en superklass Java Collections Framework Är en hierarki av interface, abstrakta klasser och konkreta klasser för samlingar av element. Finns i paketet java.util. JFC - interface hieraki Collection Queue List Set SortedSet Map SortedMap en samling av element, där dubbletter tillåts en samling av element som utgör en kö en samling element där dubbletter tillåts och där positionerna är möjlig (första, sista, element på plats i,...) en samling element där dubbletter är förbjudna som Set men med kravet att elementen går att jämföra en samling element där varje element har en nyckel och ett värde som Map men med krav att nycklarna går att jämföra 15
16 Interface Queue List Set SortedSet Map SortedMap Implementering LinkedList, PriorityQueue ArrayList, LinkedList HashSet TreeSet HashMap TreeMap 17 Klassen Object Det finns en klass Object, som är alla klassers moder, om vi inte uttryckligen ärver någon annan klass så ärver vi automatiskt klassen Object. Klassen Object innehåller en del metoder som kan vara bra att känna till: tostring public String tostring() ger en sträng som beskriver objektet. Denna operation anropas automatiskt om vi skulle försöka skriva ut ett objekt, och implementationen i klassen Object skriver ut klassnamnet och ett heltal (objektets hash-kod) Metoden equals används för att jämföra om två objekt är lika. public boolean equals(object obj); Metoden returnerar true om och endast om de jämföra objekten är identiska. Om man istället vill att innehållet inuti objekten ska jämföras måste man skugga equals. public boolean equals(object obj){ if (obj instanceof Person){ return idnbr == ((Person) obj).idnbr; else{ return false; Observera att parametern till equals måste vara av typen Object, annars blir det inte skuggning. Därför måste också typomvandlig 16
17 till Person ske när man ska använda obj:s idnbr. Uttrycket obj instanceof Person returnerar true om obj:s typ är av Person eller någon subklass till Person. Uttrycket obj instanceof Person returnerar false om obj har värdet null. Förutom operationerna ovan innehåller även Object en operation public int hashcode() som ger en så kallad hash-kod, dvs ett slags numeriskt fingeravtryck för ett objekt. Detta innebär att alla objekt har en hashkod. Exempel: public int hashcode() { return isbn.hashcode(); 18 Algoritmers tidsåtgång Storleksordning för funktioner: f(n) namn 1 konstant log n logaritmisk n linjär n log n log-linjär n 2 kvadratisk n 3 kubisk 2 n exponentiell 18.1 Tidskomplexitet för några algoritmer Sortera n tal med urvalssortering, bubbelsortering eller insättningssortering: O(n 2 ) Sortera med Mergesort och Quicksort: O(n log n) Söka bland n osorterade element: O(n) 17
18 Söka med binärsökning bland n sorterade element: O(log n) Sätta in element först i en lista med n element: O(1). 18
Interfacen Set och Map, hashtabeller
Föreläsning 0 Innehåll Hashtabeller implementering, effektivitet Interfacen Set och Map ijava Interfacet Comparator Undervisningsmoment: föreläsning 0, övningsuppgifter 0-, lab 5 och 6 Avsnitt i läroboken:
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
Diskutera. Hashfunktion
Föreläsning 1 Innehåll Diskutera Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Tidigare har
Föreläsning 10 Innehåll
Föreläsning 10 Innehåll Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Undervisningsmoment:
Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet
Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig
ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar
Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp
Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal)
Föreläsning 0 Innehåll Diskutera Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map ijava Undervisningsmoment:
Inlämningsuppgift och handledning
Inlämningsuppgift och handledning Inlämningsuppgiften redovisas i vecka 49/50. Hög tid att komma igång! Jourtider varje vecka (se http://cs.lth.se/edaa01ht/inlaemningsuppgift) Frågestunder på fredagluncher
Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel
Föreläsning 3 Innehåll Generiska klasser Implementera generiska klasser Exceptions Dokumentationekommentarer javadoc Enhetstestning - junit Man kan deklarera en eller flera typparametrar när man definierar
Föreläsning 14 Innehåll
Föreläsning 14 Innehåll Abstrakta datatyper, datastrukturer Att jämföra objekt övriga moment i kursen Om tentamen Skriftlig tentamen både programmeringsuppgifter och teoriuppgifter Hitta fel i fingerade
Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna
Föreläsning Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Implementering med lista ar Implementering av prioritetskö med heap Sortering
Inlämningsuppgift och handledning. Föreläsning 11 Innehåll. Diskutera. Hashtabeller
Inlämningsuppgift och handledning Föreläsning 11 Innehåll Inlämningsuppgiften redovisas i vecka 49/50. Hög tid att komma igång! Jourtider varje vecka (se http://cs.lth.se/edaa01ht/inlaemningsuppgift) Frågestunder
ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar
Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap
Föreläsning 13 Innehåll
Föreläsning 13 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Heapar Implementering av prioritetskö med heap Klassen PriorityQueue i java.util Programexempel LPT-algoritmen
Seminarium 13 Innehåll
Seminarium 13 Innehåll Prioritetsköer och heapar Prioritetsköer ADTn Klassen PriorityQueue i java.util Implementering med lista Heapar ADTn För implementering av prioritetskö För sortering Efter seminariet
Föreläsning 11 Innehåll
Föreläsning 11 Innehåll Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Datavetenskap (LTH)
Programmering, minneshjälp för den glömske
Programmering, minneshjälp för den glömske Philip Larsson 2013 02 07 1 Programmering - bra att veta 1.1 Inmatning Inmatning sker med klassen Scanner. Scanner hör till paketet java.util så detta måste importeras.
Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition
Föreläsning Innehåll Diskutera Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
13 Prioritetsköer, heapar
Prioritetsköer, heapar 31 13 Prioritetsköer, heapar U 101. En prioritetskö är en samling element där varje element har en prioritet (som används för att jämföra elementen med). Elementen plockas ut i prioritetsordning
Föreläsning 10 Innehåll
Föreläsning 10 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
Föreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd
Föreläsning Innehåll Diskutera Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet
Föreläsning 3 Innehåll
Föreläsning 3 Innehåll Jämföra element interfacen Comparable och och Comparator Implementera generiska klasser Exceptions Dokumentationekommentarer javadoc Enhetstestning - junit Datavetenskap (LTH) Föreläsning
Diskutera Sortera objekt
Föreläsning 3 Innehåll Diskutera Sortera objekt Metoden sort är en statisk metod i klassen Arrays. Den sorterar vektorn som skickas med som argument. Jämföra element interfacen Comparable och och Comparator
ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition
Seminarium 4 Köer och Stackar Innehåll ADT:erna Kö och Stack Definitioner Operationer Exempel på användning Givna klasser i Java Interfacet Queue Klassen Stack Klassen LinkedList Klassen PriorityQueue
Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19 1. a) En samling element där insättning och borttagning
Länkade strukturer. (del 2)
Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion
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:
Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt
Föreläsning 9 Innehåll
Föreläsning 9 Innehåll Träd, speciellt binära träd egenskaper användningsområden implementering Datavetenskap (LTH) Föreläsning 9 HT 2017 1 / 31 Inlämningsuppgiften De föreläsningar som inlämningsuppgiften
F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander
F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder
Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs 2013 12 19 1. a) En samling element där insättning och borttagning
Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.
Seminarium 2 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Generik används för att få typsäkra datastrukturer Java Collections Framework Standardbibliotek med datastrukturer i
Föreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT07) Fredrik Lindblad 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat07 1 Innehåll
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 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
Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.
Seminarium 3 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Java Collections Framework interface och klasser för samlingar av element interfacen Iterator och Iterable och foreach-sats
Tentamen, EDAA01 Programmeringsteknik fördjupningskurs
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2014 03 10, 8.00 13.00 Anvisningar: Denna tentamen består av 5 uppgifter. Preliminärt
Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.
-Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och
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
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
F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad
F5: Debriefing OU2, repetition av listor, träd och hashtabeller Carl Nettelblad 2017-04-24 Frågor Kommer nog inte att täcka 2 timmar Har ni frågor på OU3, något annat vi har tagit hittills på kursen, listor
Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd
Föreläsning 8 Innehåll Datastrukturer i kursen Träd, speciellt binära träd egenskaper användningsområden implementering Undervisningsmoment: föreläsning 8, övningsuppgifter 8, lab 4 Avsnitt i läroboken:
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
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
Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen
Föreläsning 9 Innehåll Inlämningsuppgiften De föreläsningar som inlämningsuppgiften bygger på är nu klara. Det är alltså dags att börja arbeta med inlämningsuppgiften. Träd, speciellt binära träd egenskaper
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
Binära sökträd. Seminarium 9 Binära sökträd Innehåll. Traversering av binära sökträd. Binära sökträd Definition. Exempel på vad du ska kunna
Seminarium inära sökträd Innehåll inära sökträd inära sökträd Definition Implementering lgoritmer Sökning Insättning orttagning Effektivitet alanserade binära sökträd Eempel på vad du ska kunna Förklara
Föreläsning 4 Innehåll
Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och
Föreläsning 7. Träd och binära sökträd
Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Det är extra mycket
Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor
Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.
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
Tentamen, EDAA01 Programmeringsteknik fördjupningskurs
LUNDS TEKNISKA HÖGSKOLA 1(3) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2017 08 14, 8.00 13.00 Anvisningar: Denna tentamen består av 5 uppgifter. Preliminärt
Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)
Objektorienterad Programmering DAT043 Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Metoden clone() Skapa kopior av existerande objekt. Interface Cloneable Deep vs.
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:
Träd Hierarkiska strukturer
Träd Hierarkiska strukturer a 1 a 2 a 3 a 4 a 2 a 5 a 6 a 7 Hierarki: Korta vägar till många Hur korta? Linjär lista: n 2 Träd: Antal element på avståndet m: g m a 1 a 3 a 8 a 12 m = log g n a 9 a 10 Väglängden
Samlingar Collection classes
Samlingar Collection classes Sven-Olof Nyström Uppsala Universitet 17 mars 2005 Skansholm: Kapitel 9, 19 Se även Suns tutorial om Collections Olika slag av samlingar i Java Arrayer (Till exempel: int[])
Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/
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 - Hashtabeller
Datastrukturer som passar för sökning. Föreläsning 10 Innehåll. Inordertraversering av binära sökträd. Binära sökträd Definition
Föreläsning Innehåll inära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet alanserade binära sökträd VL-träd Datastrukturer som passar för sökning ntag att vi i ett
Datastrukturer. föreläsning 3. Stacks 1
Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer
Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer
Arrayer Samling av data Datastrukturer int[] minatelnummer = new int[30]; // allokering av tillräckligt // stort minnesutrymme Element refereras genom indexering ringa = minatelnummer[25]; // indexering
Föreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig
DAI2 (TIDAL) + I2 (TKIEK)
TNTMN KURSNMN PROGRM: KURSTKNING XMINTOR lgoritmer och datastrukturer I2 (TIL) + I2 (TKIK) 2017/2018, lp 4 LT75 Uno Holmer TI ÖR TNTMN redagen den 1/8 2018, 08.0-12.0 HJÄLPML NSVRIG LÄRR atastrukturer
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
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
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
Föreläsning 9 Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT07) Fredrik Lindblad 27 november 207 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/20/course/dat07 Innehåll 2
Datastrukturer som passar för sökning. Föreläsning 11 Innehåll. Binära sökträd Definition. Inordertraversering av binära sökträd
Föreläsning Innehåll inära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, VL-träd Jämföra objekt interfacet omparable Interfacet omparator
EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass
EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet
Föreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra
Sortering. Föreläsning 12 Innehåll. Sortering i Java. Sortering i Java Exempel. Sortering
Föreläsning 12 Innehåll Sortering Sortering O(n 2 )-algoritmer: urvalsering insättningsering O(n log n)-algoritmer: Merge Quick Varför era? För att göra sökning effektivare. För att förenkla vissa algoritmer.
Föreläsning 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
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
Tentamen kl Uppgift 4. Uppgift 5
2D344 Grundläggande Datalogi för F Tentamen 2003-03-0 kl 4.00 9.00 Inga hjälpmedel. Endast ett svarsalternativ på varje fråga är korrekt. Felaktigt svar eller felaktigt antal ikryssade svarsalternativ
Föreläsning 7. Träd och binära sökträd
Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Läsanvisningar och
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;
Java Collections Framework. Föreläsning 2 Innehåll. Java Collections Framework interface hierarki. Java Collections Framework interface hierarki
Föreläsning 2 Innehåll Java Collections Framework (interface och klasser för samlingar av element) Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element skugga
Föreläsning 13 Datastrukturer (DAT037)
Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 11 december 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
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
Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.
Tentamen Programmeringsteknik II 2018-05-28 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper. Fyll i försättssidan
Lösningsförslag till exempeltenta 1
Lösningsförslag till exempeltenta 1 1 1. Beskriv hur binärsökning fungerar. Beskriv dess pseudokod och förklara så klart som möjligt hur den fungerar. 2 Uppgift 1 - Lösning Huvudidé: - Titta på datan i
Föreläsning 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
Algoritmer och datastrukturer
Algoritmer och datastrukturer Binära sökträd Hash Tabeller Sökning Många datastukturer försöker uppnå den effektivaste sökningen I arrayer - linjer sökning, och binärt sökning när arrayen kan vara sörterad
Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet
Föreläsning 5 Innehåll Algoritmer och effektivitet Algoritmer och effektivitet Att bedöma, mäta och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Undervisningsmoment: föreläsning 5, övningsuppgifter
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 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 {
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, EDAA01 Programmeringsteknik fördjupningskurs
LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2015 01 12, 14.00 19.00 Anvisningar: Denna tentamen består av 5 uppgifter. Preliminärt
Programmeringsteknik - fördjupningskurs
Programmeringsteknik - fördjupningskurs David Karlsson 11 april 2012 1 Innehåll 1 Objektorientering 4 2 Kommentering av koden 6 3 Typer av fel 6 3.1 Exception..........................................
Föreläsning 2 Innehåll
Föreläsning 2 Innehåll Java Collections Framework (interface och klasser för samlingar av element) Använda generiska klasser autoboxing - och unboxing Iterera genom en samling element Jämföra element skugga
TDDC Terminologi Uppdaterad Fö #1
Det här dokumentet ska inte ses som en uttömmande förklaring av varje term, utan snarare som en snabb påminnelse om vad varje enskild term betydde. För en mer noggrann beskrivning, se kursmaterialet eller
Repetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
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
Algoritmer och datastrukturer 2012, fo rela sning 8
lgoritmer och datastrukturer 01, fo rela sning 8 Komplexitet för binära sökträd De viktigaste operationerna på binära sökträd är insert, find och remove Tiden det tar att utföra en operation bestäms till
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
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 5 Datastrukturer (DAT037)
Föreläsning 5 Datastrukturer (DAT037) Nils Anders Danielsson, Fredrik Lindblad 2016-11-14 Förra gången: Cirkulära arrayer Prioritetskö Binära heapar Leftistheapar merge Det verkar inte gå att slå ihop
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/ Idag - Hashtabeller - Flerdimensionella arrayer (2D) 2 Repetition -
Repetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)
Binära träd Algoritmer och Datastrukturer Markus Saers markus.saers@lingfil.uu.se Upplägg Binära träd (9) Binära sökträd (0.) Träd Många botaniska termer Träd, rot, löv, gren, Trädets rot kan ha ett antal
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