Några standardalgoritmer

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

Avlusning Debugger (”avlusare”) Breakpoints Watch.
Relationsoperatorer Java/C# C/C++ Visual Basic FORTRAN PASCAL ORACLE
Svenska Akademins Ordbok (SAOB)
9. Gör ritningen innan Du bygger huset
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
10. Elementen i strukturerad programmering
Klasser och objekt.
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
Sökning och sortering Linda Mannila
Fortsättningskurs i Programmering lektion 6
Datatyper C# C/C++ Java VB Fortran Pascal bool boolean Boolean
Stora + Störst tal först. Stora additionstabellen Tanketips!
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Filhantering Grundprincipen för filhantering Öppna filen
Föreläsning 12 Matlab J-uppgiften.
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Att programmera i språket Java
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Stora additionstabellen
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2004.
i olika programmeringsspråk
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Programmering B PHP Lektion 2
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT CD5250 OOP med C++
Företagarpanelen – Q SEPTEMBER 2011 Hallands län.
Programmering B PHP Lektion 3
Sveriges utrikeshandel (Andelar i procent) ImportExport EU (25) EFTA NAFTA Central- och Östeuropa Asien - Japan - Kina Övriga 59,9.
Vektorer (klassen Vector) Sortering
Polymorfism.
Bild 1 Hur använder vi KursInfo idag? Högskolan i Skövde.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Räckvidd och synlighet. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Synlighet (meddelandesändning) Det.
:44 Mäklarpanelen maj För vilka är bostadsmarknaden mest fördelaktig just nu, d v s i vilken utsträckning är det.
Arv.
TÄNK PÅ ETT HELTAL MELLAN 1-50
Programmeringsteknik för Media1 & K1
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Listor En lista är en föränderlig ordnad samling objekt.
Funktioner, styrstrukturer, manipulering av matriser
Grundläggande programmering
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1 De bifogade OH-bilderna är bara utkast till vad som kan vara.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
1 Programmera med strängar nr 9 Tal till sträng Sträng till tal Grep Sträng till lista av ord.
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Stora subtraktionstabellen
Frekvenstabell Frekvenstabell Skriv ett program som slumpar ett tärningskast n gånger. Programmet skall därefter skriva ut en frekvenstabell över observationerna.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
Föreläsning 4 Listor, tupler, och for-loopar. Listor En lista är en föränderlig ordnad samling objekt. Listor skapas med hakparenteser. lista = [12,13,14,15]
Länkade listor Binära träd
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Föreläsning 2 programmeringsteknik och Matlab 2D1312/ 2D1305
1 Föreläsning2 Operativsystem. 2 Talsystem Decimal (bas 10): 0,1,2,…,8,9 Binär talsystem (bas 2): endast 1 och 0 Hexadecimal talsystem (bas 16): 0,1,…9,A,…,E,F.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
Malmö högskola Rolf Axelsson 2003/2004 DA7235, 4 poäng Fält som returvärde Sortera fält Söka i fält Tvådimensionella fält Fält och spelplan Föreläsning.
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

Några standardalgoritmer Utökning och minskning av vektor Sortering av vektor Sökning i vektor Sammanslagning av sorterade vektorer

Utökning av en vektor (FD) Indata: vektor, nytt Skapa nyVektor med längden av vektor + 1 i = 0 returnera nyVektor i < vektorns längd nyVektor[i] = vektor[i] true false Lägg nytt på sista platsen i nyVektor i = i + 1

Utökning av en vektor (JSP) Indata: vektor, nytt Skapa nyVektor med längden av vektor + 1 i = 0 nyVektor[i] = vektor[i] Utökning Stomme Yttre loop * (i < vektorns längd) Lägg nytt på sista platsen i nyVektor returnera nyVektor i = i + 1

Minskning av en vektor (FD) SlimArray Indata: vektor, index Skapa nyVektor med längden av vektor - 1 i = 0 i < index nyVektor[i] = vektor[i] true false i = index + 1 returnera nyVektor vektorns längd nyVektor[i-1] i = i + 1 i + 1

Minskning av en vektor (JSP) Indata: vektor, index Skapa nyVektor med längden av vektor - 1 i = 0 nyVektor[j] = vektor[i] SlimArray Stomme Första loop * (i < index) returnera nyVektor i = i + 1 Andra loop (i < vektorns längd) i = index + 1

Sorteringar

Swap JSP Flödesdiagram Indata: vektor index a index b Swap Indata: temp = vektor[a] vektor[a] = vektor[b] temp = vektor[a] vektor[a] = vektor[b] vektor[b] = temp vektor[b] = temp Stopp

BubbleSort (FD) Indata: vektor BubbleSort osorterad = true osorterad? osorterad = false end = längden av vektorn - 1 false j = 0 j = j + 1 false vektor[j] > vektor[j + 1] j < end true false true Swap (vektor, j, j+1) osorterad = true end = end - 1 Stopp

end = längden av vektorn - 1 Indata: vektor BubbleSort BubbleSort (JSP) osorterad = true end = längden av vektorn - 1 Stomme Yttre loop (osorterad) * osorterad = false j = 0 Stomme Inre loop end = end - 1 (j < end) * Selektion j = j + 1 ( vektor[j] > vektor[j + 1] ) o Swap (vektor, j, j+1) osorterad = true

vektor[minst] > vektor[j] Indata: vektor ExchangeSort (FD) Exchange i = 0 i = i + 1 i < vektorns längd - 1? true minst = i false j = i + 1 j = j + 1 false vektor[minst] > vektor[j] j < vektorns längd true true minst = j false i < minst true Swap (vektor, minst, i) Stopp false

ExchangeSort (JSP) Indata: vektor Exchange i = 0 Stomme Yttre loop (i < vektorns längd - 1) * minst = i j = i + 1 Stomme Inre loop Selektion i = i + 1 (i < minst) (j < vektorns längd ) o Swap (vektor, minst, i) * Selektion j = j + 1 ( vektor[minst] > vektor[j] ) o minst = j

Linjär sökning Flödesdiagram Linjär Sökning Indata: vektor, target JSP vektorns längd? false returnera -1 i = 0 Iteration returnera -1 (i < vektorns längd) true * vektor[i] == target true returnera i Selektion i = i + 1 false ( vektor[i] = target ) o minst = j returnera i

Binär sökning (FD) Indata: vektor, target Binär Sökning high – low > 1 true high = vektorns längd false low = -1 eller vektor[low] <> target true probe = (high + low) / 2 low = -1 vektor[probe] > target false returnera low returnera -1 true false low = probe high = probe

Binär sökning (JSP) Indata: vektor, target Binär sökning high = vektorns längd low = -1 Iteration Selektion ( low = -1 eller vektor[low] <> target) (high – low > 1) returnera -1 o returnera low o * probe = (high + low) / 2 Selektion (vektor[probe] > target) o o high = probe low = probe

Förena listor (FD) first är tom second är tom false Skapa ny vektor merged med längd av first + second countFirst = 0 countSecond = 0 i = 0 Merge false Indata vektorer: first , second true true returnera second returnera first i = i + 1 i < längden av merged false returnera merged Förena listor (FD) true first[countFirst] < second[countSecond] countFirst = längden på first countSecond = längden på second false false false true true true Merged[i] = second[countSecond] Merged[i] = first[countFirst] Merged[i] = first[countFirst] Merged[i] = second[countSecond] countSecond = countSecond + 1 countFirst = countFirst + 1 countFirst = countFirst + 1 countSecond = countSecond + 1

Förena listor (JSP) Indata vektorer: first, second Merge Selektion Skapa ny vektor merged med längd av first + second countFirst = 0 countSecond = 0 i = 0 Iteration returnera merged (i < längden av merged) (om first är tom) (om second är tom) * returnera second o returnera first o Selektion i = i + 1 (countFirst = längden på first) (first[countFirst] < second[countSecond] ) (countSecond = längden på second) o o o o merged[i] = first[countFirst] countFirst = countFirst + 1 merged[i] = second[countSecond] countSecond = countSecond + 1 merged[i] = first[countFirst] countFirst = countFirst + 1 merged[i] = second[countSecond] countSecond = countSecond + 1

Sortering och sökning på annat än heltal Om vi ex. vill sortera en vektor av böcker, måste vi jämföra på annat än numeriska värden: if ( vektor[probe].ISBN.CompareTo( target ) > 0 ) Som Du ser kan vi här inte använda de vanliga relationsoperatorerna, eftersom string inte implementerat dem, utan vi är då istället tvungna att använda metoden CompareTo.

Brytning av listor Att tänka på: Vilket eller vilka fält sorterar vi efter? Vilket eller vilka fält bryter vi på? Vilka variabler skall nollställas vid brytningen? Vilka skall inte nollställas?