Föreläsning 12 Innehåll
|
|
- Gerd Lundgren
- för 5 år sedan
- Visningar:
Transkript
1 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 / 40
2 Sortering Varför sortera? För att göra sökning effektivare. För att förenkla vissa algoritmer. Varför olika sorteringsalgoritmer? Olika sorteringsalgoritmer passar bra i olika sammanhang. Ingen enskild algoritm är bäst i alla möjliga situtioner. Datavetenskap (LTH) Föreläsning 12 VT / 40
3 Sortering i Java I klassen java.util.arrays finns metoder för att sortera vektorer t ex: public static void sort(int[] items) public static void sort(object[] items) elementen jämförs med compareto public static <T> void sort(t[] items, Comparator<? super T> comp) elementen jämförs med comp.compare Exempel: int[] a = {1, 4, 1, 9, 5, 2, 6}; Arrays.sort(a); I interfacet java.util.list finns en metod sort för att sortera listan (fungerar alltså för t.ex. ArrayList och LinkedList). Datavetenskap (LTH) Föreläsning 12 VT / 40
4 Sortering i Java Exempel En vektor med Book-objekt ska sorteras. Klassen Book: public class Book implements Comparable<Book> { private String isbn; private String title; private String author; private int nbrpages; // konstruktor och övriga metoder } public int compareto(book o) { return isbn.compareto(o.isbn); } Datavetenskap (LTH) Föreläsning 12 VT / 40
5 Sortering i Java Comparable Book[] a = new Book[4]; a[0] = new Book("isbn4", "titleb", "authorc", 125); a[1] = new Book("isbn3", "titlea", "authorc", 523); a[2] = new Book("isbn2", "titled", "authora", 199); a[3] = new Book("isbn1", "titlec", "authorb", 278);... // sortera efter isbn-nummer - jämförs i compareto Arrays.sort(a);... Klassen Book måste implementera interfacet Comparable. Inuti metoden sort används compareto för att jämföra elementen. Datavetenskap (LTH) Föreläsning 12 VT / 40
6 Sortering i Java Comparator Book[] a = new Book[4]; a[0] = new Book("isbn4", "titleb", "authorc", 125); a[1] = new Book("isbn3", "titlea", "authorc", 523); a[2] = new Book("isbn2", "titled", "authora", 199); a[3] = new Book("isbn1", "titlec", "authorb", 278);... // sortera efter titlar Arrays.sort(a, new TitleComparator());... Klass som implementerar interfacet Comparator: public class TitleComparator implements Comparator<Book> { public int compare(book b1, Book b2) { return b1.gettitle().compareto(b2.gettitle()); } } Inuti metoden sort används compare för att jämföra elementen. Datavetenskap (LTH) Föreläsning 12 VT / 40
7 Sortering i Java Lambdauttryck Sortera efter titlar: Arrays.sort(a, (b1, b2) -> b1.gettitle().compareto(b2.gettitle()) ); Sortera efter antal sidor: Arrays.sort(a, (b1, b2) -> b1.nbrpages() - b2.nbrpages() ); Istället för att skriva en klass som implementerar interfacet Comparator kan vi använda ett lambdauttryck. Inuti metoden sort används compare för att jämföra elementen. Datavetenskap (LTH) Föreläsning 12 VT / 40
8 Kommentar: om subtraktion i Comparator I föregående bild används subtraktion för att få ett värde < 0, == 0, > 0: b1.nbrpages() - b2.nbrpages() Differensen får fel tecken om termerna är väldigt stora (i storleksordningen Integer.MAX_VALUE eller MIN_VALUE), och har olika tecken. Problemet kallas overflow, och har att göra med att datatypen int har ett begränsat maximalt antal siffror (32 bitar, binära siffror). Overflow kan inte inträffa i vårt exempel med böcker och sidantal. (Varför?) Om man hanterar stora tal kan hjälpmetoden Integer.compare användas: Arrays.sort(a, (b1, b2) -> Integer.compare(b1.nbrPages(), b2.nbrpages()) ); Datavetenskap (LTH) Föreläsning 12 VT / 40
9 Urvalsortering i vektor Urvalsortering (eng. selection sort) Sök minsta elementet i den osorterade delen av vektorn och byt plats med första osorterade element (first = första elementet i den osorterade delen): first first min 2.8 first first min min first min 4.5 min Tidskomplexitet: n 1 + n = O(n 2 ) Datavetenskap (LTH) Föreläsning 12 VT / 40
10 Urvalssortering Tidskomplexitet är O(n 2 ). Efter k pass är de k minsta (eller största) elementen sorterade. Kan därför vara lämplig om man bara vill få fram de k minsta (eller största) och k är litet. Tidskomplexitet är då O(k n) Datavetenskap (LTH) Föreläsning 12 VT / 40
11 Insättningssortering i vektor Insättningssortering (eng. insertion sort) Element på plats k i vektorn sätts in på rätt plats bland de redan sorterade elementen på platserna 0..k 1 Detta görs för k = 1, 2,..., n sort osort 6.2 sort osort 2.8 sort osort 5.0 sort osort 1.1 sort osort 4.5 sort 6.2 Tidskomplexitet (värstafall): n 1 = n(n 1)/2 = O(n 2 ). Även medelfallet kan visas vara O(n 2 ). Datavetenskap (LTH) Föreläsning 12 VT / 40
12 Diskutera Blir urvalssortering snabbare eller långsammare om vektorns element råkar vara sorterade i stigande ordning? Blir insättningssortering snabbare eller långsammare om vektorns element råkar vara sorterade i stigande ordning? Datavetenskap (LTH) Föreläsning 12 VT / 40
13 Insättningssortering Tidskomplexitet är O(n 2 ) i värsta fall och i medelfall. Dock bra metod om vektorn är nästan sorterad från början: Om vektorn är sorterad utförs bara en jämförelse per pass tidskomplexiteten blir då O(n). Om vektorn består av n sorterade element följda av k osorterade behövs endast k pass. Man börjar med att sortera in det (n + 1):a sedan det (n + 2):a o s v. I varje pass görs i värsta fall O(n) jämförelser. Totalt O(k n) d.v.s. O(n) om k är litet i förhållande till n. Datavetenskap (LTH) Föreläsning 12 VT / 40
14 Insättningssortering public static <T extends Comparable<T>> void sort(t[] a) { for (int i = 1; i < a.length; i++) { T nextval = a[i]; int nextpos = i; while (nextpos > 0 && nextval.compareto(a[nextpos - 1]) < 0) { a[nextpos] = a[nextpos - 1]; nextpos--; } a[nextpos] = nextval; } } Datavetenskap (LTH) Föreläsning 12 VT / 40
15 Kommentar: begränsad typparameter Metoden sort skulle kunna skrivas så här: public static void sort(object[] a) {...} För att anropet av compareto inuti sort ska fungera måste nextval typkonverteras till Comparable:... ((Comparable) nextval).compareto(...)... Klassen som beskriver elementen i vektorn måste implementera Comparable. Annars genereras ClassCastException vid exekveringen. Man kan istället låta klassen vara generisk och begränsa typparametern T så att det redan vid kompileringen krävs att klassen som ersätter T implementerar Comparable<T>: public static <T extends Comparable<T>> void sort(t[] a) {...} Datavetenskap (LTH) Föreläsning 12 VT / 40
16 Insättningssortering Variant med komparator public static <T> void sort(t[] a, Comparator<T> comp) { for (int i = 1; i < a.length; i++) { T nextval = a[i]; int nextpos = i; while (nextpos > 0 && comp.compare(nextval, a[nextpos - 1]) < 0) { a[nextpos] = a[nextpos - 1]; nextpos--; } a[nextpos] = nextval; } } Datavetenskap (LTH) Föreläsning 12 VT / 40
17 ? super T Överkurs? super T kan utläsas okänd superklass till T (inklusive T) Deklarationen av typparametern T bör egentligen se ut så här: <T extends Comparable<? super T> istället för bara <T extends Comparable<T>>. Förklaring: Antag att vi har följande klasser: class Person implements Comparable<Person> {... } class Student extends Person {... } Om den andra, enklare varianten används kan vi inte kan vi inte skriva: Student[] v =... sort(v); Klassen Student implementerar inte Comparable<Student> utan istället genom arv Comparable<Person>. Datavetenskap (LTH) Föreläsning 12 VT / 40
18 Mergesort Sortera med söndra- och härskateknik Sortera vänstra halvan Sortera högra halvan Samsortera de båda sorterade halvorna Datavetenskap (LTH) Föreläsning 12 VT / 40
19 Merge samsortering av sorterade följder Algoritm Givet två följder v1 och v2 med element sorterade i växande ordning. Samsortera till en följd res. Algoritm: i = j = k = 0 så länge det finns obehandlade element kvar i både v1 och v2 jämför elementet i v1[i] med elementet i v2[j] om det minsta elementet är från v1 res[k] = v1[i] i = i + 1 annars res[k] = v2[j] j = j + 1 k = k + 1 En av följderna v1 och v2 har obehandlade element kvar. Flytta dessa element till res. Datavetenskap (LTH) Föreläsning 12 VT / 40
20 Samsortering av sorterade följder exempel v v v v v v v v res res 1 res 1 2 res v v v v v v res res res v v2 res Datavetenskap (LTH) Föreläsning 12 VT / 40
21 Samsorteringen i Mergesort I samsorteringssteget i Mergesort (merge) motsvaras de båda följderna v1 och v2 av de båda sorterade vektorhalvorna. Det går inte att utföra samsorteringen i den ursprungliga vektorn. En hjälpvektor, lika stor som den som ska sorteras, behövs. När man i merge-steget skall slå samman två delvektorer: används motsvarande utrymme i hjälpvektorn (tmparray): Resultatet flyttas sedan tillbaka till ursprungsvektorn. Datavetenskap (LTH) Föreläsning 12 VT / 40
22 Samsorteringen i Mergesort Exempel Slå samman delvektorerna v1 och v2 i vektorn a (bestående av ett element vardera): a tmparray 2 7 Resultatet flyttas sedan tillbaka till den ursprungliga vektorn. a Datavetenskap (LTH) Föreläsning 12 VT / 40
23 merge implementeringsskiss Slå samman de sorterade delvektorerna a[leftpos].. a[rightpos - 1] och a[rightpos].. a[rightend]: private static <T extends Comparable<T>> void merge(t[] a, T[] tmparray, int leftpos, int rightpos, int rightend) { int leftend = rightpos - 1; int tmppos = leftpos;... rightend leftpos rightpos Datavetenskap (LTH) Föreläsning 12 VT / 40
24 merge implementeringsskiss Forts while (leftpos <= leftend && rightpos <= rightend) { if (a[leftpos].compareto(a[rightpos]) <= 0) { tmparray[tmppos] = a[leftpos]; leftpos++; } else { tmparray[tmppos] = a[rightpos]; rightpos++; } tmppos++; } /* Nu är en av delvektorerna tom. Kopiera över resten av elementen i den icke tomma vektorn till tmparray */ } /* Flytta till sist tillbaks elementen från tmparray till motsvarande platser i a */ Datavetenskap (LTH) Föreläsning 12 VT / 40
25 Mergesort implementering /** Sorterar elementen i vektora a */ public static <T extends Comparable<T>> void sort(t[] a) { T[] tmparray = (T[]) new Comparable[a.length]; mergesort(a, tmparray, 0, a.length - 1); } private static <T extends Comparable<T>> void mergesort(t[] a, T[] tmparray, int first, int last) { if (first < last) { int mid = first + (last - first) / 2; mergesort(a, tmparray, first, mid); mergesort(a, tmparray, mid + 1, last); merge(a, tmparray, first, mid + 1, last); } } Datavetenskap (LTH) Föreläsning 12 VT / 40
26 Stabila sorteringsalgoritmer Stabila sorteringsalgoritmer Bibehåller ordningen för element med lika nycklar efter sorteringen. Exempel: Antag att vi har personer ordnade efter förnamn: Ada Andersson, Bo Eriksson, Lars Andersson, Lena Andersson Om vi vill sortera efter efternamn istället, men samtidigt bibehålla den tidigare ordningen mellan förnamnen så måste vi använda en stabil sorteringsalgoritm. Ada Andersson, Lars Andersson, Lena Andersson, Bo Eriksson Är mergesort stabil? Datavetenskap (LTH) Föreläsning 12 VT / 40
27 Mergesort tidskomplexitet Att samsortera två sorterade delvektorer av sammanlagd storlek n kostar O(n). 1 merge av två delvektorer av storlek n/2, kostnad n 2 merge av två delvektorer av storlek n/4, kostnad 2 n/2 = n 4 merge av två delvektorer av storlek n/8, kostnad 4 n/4 = n Antal nivåer = log n = total kostnad O(n log n) Datavetenskap (LTH) Föreläsning 12 VT / 40
28 Quicksort Söndra- och härskaalgoritm. Oftast snabb Sämre än Mergesort i värsta fall O(n 2 ). Bra (snabb) i medelfall O(n log n). Värstafallet kan göras statistiskt osannolikt. Inget extra minnesutrymme för temporär vektor krävs. Datavetenskap (LTH) Föreläsning 12 VT / 40
29 Quicksort algoritm Välj ut ett element (pivotelement). Se till att det hamnar på rätt plats: Flytta om elementen så att element pivot hamnar till vänster och element pivot hamnar till höger. Kallas partitionering av vektorn. x x x Pivot-elementet, på rätt plats Upprepa rekursivt på de båda delvektorerna till vänster respektive till höger om pivotelementet. Datavetenskap (LTH) Föreläsning 12 VT / 40
30 Quicksort implementering public static <T extends Comparable<T>> void sort(t[] a) { quicksort(a, 0, a.length - 1); } /* Privat hjälpmetod. Sorterar delvektorn a[first]..a[last] */ private static <T extends Comparable<T>> void quicksort(t[] a, int first, int last) { if (first < last) { int pivindex = partition(a, first, last); quicksort(a, first, pivindex - 1); quicksort(a, pivindex + 1, last); } } Datavetenskap (LTH) Föreläsning 12 VT / 40
31 Quicksort val av pivot I princip kan vilket element som helst väljas. Vi börjar för enkelhets skull med att välja första elementet i vektorn. Inte särskilt bra val. Vi återkommer senare med en diskussion om bättre val. Datavetenskap (LTH) Föreläsning 12 VT / 40
32 Quicksort partitioneringssteget Sök från vänster upp ett element som är pivot. Sök från höger upp ett element som är pivot. Byt plats på dessa. Fortsätt tills hela vektorn genomletats. Pivotelementet kan sättas in mellan de båda vektordelarna som uppstår. Arbetet blir proportionellt mot vektorns längd. Datavetenskap (LTH) Föreläsning 12 VT / 40
33 Partitionering exempel pivot = Efter byte: Efter byte: Byt plats på detta och pivot pivot Datavetenskap (LTH) Föreläsning 12 VT / 40
34 Partitionering sorterad vektor Dåligt val av pivot Om vektorn är sorterad och om pivot väljs som första elementet hamnar Quicksort i sitt värsta fall: pivot = Byt plats på detta och pivot pivot Tom vektordel till vänster Alla element utom ett till höger Detta upprepas i alla rekursiva upplagor. Datavetenskap (LTH) Föreläsning 12 VT / 40
35 Quicksort tidskomplexitet Man kan visa att det bästa fallet för Quicksort är när vektorn delas mitt itu i varje rekursiv upplaga. Då är tidskomplexiteten = O(n log n) x x pivot x Sämsta fall är när den ena delvektorn blir tom i varje rekursiv upplaga. Då är tidskomplexiteten = O(n 2 ) x pivot x Datavetenskap (LTH) Föreläsning 12 VT / 40
36 Quicksort bättre val av pivot Välj median av första, mittersta och sista elementet. Eliminerar riskerna i samband med sorterad eller nästan sorterad indata left mid right Sortera de tre elementen i växande ordning: left mid right pivot Median av de tre är nu mittelementet. Datavetenskap (LTH) Föreläsning 12 VT / 40
37 Quicksort bättre val av pivot Forts Byt elementet på plats mid med elementet på plats left. Då hamnar pivotelementet längs till vänster precis som förut pivot Nu kan partitioneringssteget utföras som förut. Datavetenskap (LTH) Föreläsning 12 VT / 40
38 Varianter av partitioneringssteget Stanna eller ej (och byta) vid likhet med pivot? Om vi inte stannar och byter och alla nycklar är lika hamnar vi i sämsta fallet pivot Om vi stannar och byter och alla nycklar är lika blir det bästa fallet pivot Man brukar rekommendera att stanna och byta vid likhet. Datavetenskap (LTH) Föreläsning 12 VT / 40
39 Quicksort efter partitioneringen Efter partitioneringen sorteras delvektorerna a[low]... a[pivindex-1] och a[pivindex+1]... a[high] rekursivt. I praktiken låter man av effektivitetsskäl metoden avstanna när delvektorn i det rekursiva anropet är mindre än Den då nästan färdigsorterade vektorn kan sorteras av någon metod som är bra på nästan sorterad indata. T.ex. är insättningssortering lämplig. Datavetenskap (LTH) Föreläsning 12 VT / 40
40 Sortering Exempel på vad du ska kunna Redogöra för och jämföra olika sorteringsalgoritmer: Insättningssortering i vektor Urvalssortering i vektor Heapsort (behandlas i samband med prioritetsköer). Mergesort Quicksort Genomföra sortering på enkla exempel med ovan nämnda metoder Samsortera två sorterade följder Förklara begreppen pivot-element och partitionering (Quicksort). Använda idéerna från sorteringsalgoritmerna för att lösa andra problem (t.ex. partionering från quicksort eller sammanslagning av sorterade följder från mergesort). Datavetenskap (LTH) Föreläsning 12 VT / 40
Föreläsning 12 Innehåll
Föreläsning 12 Innehåll Sortering O(n 2 )-algoritmer: urvalssortering insättningssortering O(n log n)-algoritmer: Mergesort Quicksort Datavetenskap (LTH) Föreläsning 12 HT 2017 1 / 38 Sortering Varför
Lä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 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 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 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 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 merADT 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
Läs merFö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
Läs merSeminarium 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
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 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 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 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 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 merFö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
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 merFö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
Läs merFö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
Läs merFö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
Läs merHitta 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
Läs merADT 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
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 merBegreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll
Mera om generik Begreppet subtyp/supertyp i Java Innehåll Wildcards Vektorer och generik Supertyper för en viss klass C är alla klasser från vilka C ärver och alla interface som klassen implementerar.
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 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 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 9 Innehåll
Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon
Läs merProgrammering 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
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 merTDDC30. 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
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 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
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 mer13 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
Läs merSortering. 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 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 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 merTentamen, Algoritmer och datastrukturer
UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och
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 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 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 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 merF9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander
F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt
Läs merAbstrakt 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ä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 merTentamen 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 merFö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
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 merProgrammering fortsättningskurs
Programmering fortsättningskurs Philip Larsson 2013 03 09 Innehåll 1 Träd 1 1.1 Binära träd........................................ 1 1.2 Strikt binärt träd..................................... 1 1.3 Binärt
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 merTeoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för
Läs merFö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
Läs merFö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
Läs merNå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 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 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 merDiskutera. 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
Läs merFö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
Läs merDiskutera 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
Läs merFö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)
Läs merInlä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
Läs merDatastrukturer 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
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 merID1020: Quicksort. Dr. Jim Dowling jdowling@kth.se. kap 2.3. Slides adapted from Algoritms 4 th Edition, Sedgewick.
ID1020: Quicksort Dr. Jim Dowling jdowling@kth.se kap 2.3 Slides adapted from Algoritms 4 th Edition, Sedgewick. Quicksort Grundläggande metod. - Blanda array:n. - Partitioner så att för något värde j
Läs merLä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
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 merGOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2)
Några saker till och lite om snabbare sortering GOTO och lägen GOTO hemskt eller ett måste? CASE enkla val över diskreta värdemängder Snabb sortering principer Snabb sortering i Scheme och Pascal QuickSort
Läs merNågra saker till och lite om snabbare sortering
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
Läs merFö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:
Läs merSö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 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 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:
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: Omega, Theta Selectionsort, Shellsort,
Läs merInlä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
Läs merpublic interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;
public interface Skrivbar { void skriv(); public class Punkt implements Skrivbar { public double x; public double y; public Punkt(double xx, double yy) { x = xx; y = yy; public Punkt() { @Override public
Läs merDatastrukturer 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
Läs merSö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 merObjektorienterad Programmering DAT043. Föreläsning 10 13/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)
Objektorienterad Programmering DAT043 Föreläsning 10 13/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Sökning och Sortering: Binärsökning Problem: Hitta ett element i en godtycklig
Läs merLösningsförslag till tentamen Datastrukturer, DAT037,
Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-04-05 1. q.dequeue() tar O(1) (eventuellt amorterat) s.contains(x) tar O(1) pq.add(x) tar O(log i) I värsta fall exekveras innehållet i if-satsen.
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 merSö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 merLö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
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 mer::= HIHI HIHIHI ::= HAHA HAHAHA
KTH, Nada, Alexander Baltatzis 2D1320, Tildatenta lösningsförslag Lördagen den 12 mars 2004 kl 8 13 1. Hitta lekisleken (a) Next-vektorn L E K I S L E K A R 0 1 1 1 1 0 1 1 4 1 (b) Tabell med tecken c
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 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 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 Innehåll
Föreläsning 13 Innehåll Exempel på problem där materialet i kursen används Hitta k största bland n element Histogramproblemet Schemaläggning PFK (Föreläsning 13) VT 2013 1 / 15 Hitta k största bland n
Läs merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 4 oktober 2017 1 Idag Algoritmkonstruktion (lite blandat) Redovisning och inlämning av labbteori 3 2 Uppgifter Uppgift
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 merDAT043 Objektorienterad Programmering
DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är
Läs merFö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
Läs merAlgoritmanalys. 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 merFö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
Läs merLö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äs merMedan ni väntar. 2. Skriv metoden. 3. Skriv metoden. Naturligtvis rekursivt och utan användning av Javas standardmetoder.
(10 september 2018 T02 1 ) Medan ni väntar 1. Binär sökning i sorterad array med n element kräver log 2 n försök. Hur många försök krävs i en array med 10 3, 10 6 respektive 10 9 element? 2. Skriv metoden
Läs merInlä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
Läs merSaker du ska kunna Föreläsning 13 & 14
Saker du ska kunna Föreläsning 13 & 14 LISTOR Ta bort element från en vektor Både sorterad och osorterad Söka upp element i en vektor Linjärsökning räcker (jag har även visat binärsökning) Registrering
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 mer