Vektorer (klassen Vector) Sortering

Slides:



Advertisements
Liknande presentationer
Algoritmer och data strukturer -Länkade listor
Advertisements

Sökning och sortering Linda Mannila
Fortsättningskurs i Programmering lektion 6
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
OOP Objekt-orienterad programmering
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Några standardalgoritmer
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
PROCESSPROGRAMMERING
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Datasamlingar och generiska enheter
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
4. Arv och dynamisk bindning
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmeringsteknik för Media1 & K1
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Föreläsning 14 ”Enkel” Filhantering.
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Programmering i C# 9. Pekare och osäker kod.
Reflektioner kring OU1 Generellt sett bra kvalitet på dokumentationen! Första intryck... –Skulle du lämna in en jobbansökan med ett häftstift/gem eller.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Datastrukturer och algoritmer
Föreläsning 4 Klasser Och Objekt.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
INTRODUKTION TILL PROGRAMMERING
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.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Programmeringsteknik för K och Media
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Övning6 Läsning från fil till java objekt Sökning Sortering.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
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.
DA7351 Programmering 1 Fält och objekt Tvådimensionella fält Sortera fält Föreläsning 13.
Iteratorer och generiska algoritmer sid. 1 6/28/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Iterator vector ::iterator b = ivec.begin() vector ivec vector.
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Presentationens avskrift:

Vektorer (klassen Vector) Sortering Föreläsning 12 Vektorer (klassen Vector) Sortering

Vector Kan ses som en dynamisk array Har metoder för att bl.a. lägga till, ta bort och returnera objekt Består internt av en array av Object Kan lagra alla typer av objekt (samtidigt) Kan inte hantera primitivatyper Finns i paketet java.util

Vector Har både en storlek och en kapacitet storlek – antal inlagda objekt kapacitet – totalt som kan läggas in Ändrar kapaciteten automatiskt Måste konvertera objekt som tas ut Är mer flexibel, men inte lika effektiv som en array

Skapa Vector Skapar ny vektor med kapacitet 10 Vector v = new Vector(); Skapar ny vektor med kapacitet 10 Fördubblas vid varje ökning (ökar exp.) Vector v = new Vector(35); Skapar ny vektor med kapacitet 35 Fördubblas vid varje ökning (ökar exp.) Vector v = new Vector(35, 5); Skapar ny vektor med kapacitet 35 Ökar med 5 element varje gång

Storlek Och Kapacitet Returnerar antalet inlagda objekt int storlek = v.size(); Returnerar antalet inlagda objekt int kapacitet = v.capacity(); Returnerar antal objekt som kan lagras v.setSize(10); Sätter storlek exakt till 10. Fyller på med null-referenser eller tar bort befintliga v.trimToSize() Sätter kapaciteten till aktuell storlek

Lägga Till Element Lägger till ett nytt objekt efter det sista v.addElement(new Person("Kalle", 33)); Lägger till ett nytt objekt efter det sista Ökar kapaciteten om det krävs v.setElementAt(new Person("Stina", 8), 6); Lägger in ett objekt på angivet index (6) Skriver ev. över det som finns sen förut v.insertElementAt(new Person("Bo", 12), 3); Skjuter in ett objekt på angivet index (3) Flyttar fram övriga objekt ett steg

Ta Bort Element Tar bort objektet på angivet index (1) v.removeElementAt(1); Tar bort objektet på angivet index (1) 0 < index > v.size() Flyttar övriga objekt v.removeAllElements(); Tar bort alla inlagda objekt (size sätts till 0) boolean tom = v.isEmpty(); Kontrollerar om vektorn innehåller några objekt eller inte (true eller false)

Hämta Ut Element Returnerar första elementet i vektorn Object first = v.firstElement(); Returnerar första elementet i vektorn Object last = v.lastElement(); Returnerar sista elementet i vektorn Object obj = v.elementAt(2); Returnerar elementet på angivet index (2) Måste konvertera till rätt typ av objekt! if (obj instanceof Person) { Person p = (Person)obj; p.print(); }

Loopa Igenom Alla Element for (int i = 0; i < v.size(); i++) { Object obj = v.elementAt(i); // Konvertera obj till rätt typ och gör något med det } Exempel 1 Enumeration e = v.elements(); while (e.hasMoreElements()) { Object obj = e.nextElement(); // Konvertera obj till rätt typ och gör något med det } Exempel 2

Sortering Ett vanligt förekommande problem Kan användas t.ex. för att: Presentera data på ett sätt så att det är lätt att söka i det för användaren Uppnå effektiv sökning Finns flera olika algoritmer Från långsamma men lätta att förstå Till snabba men svåra att förstå

Urvalssortering (Selection sort) Sortera en array med heltal Hitta minsta värdet i arrayen Byt plats med värdet på index 0 Hitta näst minsta värdet i arrayen Byt plats med värdet på index 1 Fortsätt tills hela arrayen är sorterad for (int i = 0; i < array.length – 1; i++) { int minIndex = i; // Gissar att minsta talet finns på index 0 for (int j = i + 1; j < array.length; j++) { if (array[j] < array[minIndex]; // Är övriga tal < minIndex minIndex = j; // Isf sätter vi nytt minIndex } // Dags att byta plats int tmp = array[i]; array[i] = array[minIndex]; array[minIndex] = tmp; }

Sortering med Arrays Klassen Arrays innehåller statiska metoder för att enkelt kunna: söka, sortera, jämföra och fylla arrayer Finns i paketet java.util Sorterar alla primitiva typer (ej boolean) Samt alla objekt som implementerar gränssnittet Comparable import java.util.*; int[] a = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; Arrays.sort(a);

Sortering Med Comparable Comparable är ett gränssnitt som anger att något är jämförbart Innehåller endast en metod: public int compareTo(Object o) Som jämför aktuellt objekt med objektet o och… Returnerar -1 om aktuellt objekt kommer före objekt o Returnerar 0 om aktuellt objekt och objekt o är lika Returnerar 1 om aktuellt objekt kommer efter objekt o Vi måste själva bestämma hur denna jämförelse ska utföras

Sortering Med Comparable Kan t.ex. implementeras i de klasser vi vill kunna sortera med Arrays Måste konvertera objekt o till rätt typ public class Vara implements Comparable { private String typ; private int pris; public Vara(String t, int p) { typ = t; pris = p; } public int compareTo(Object o) { Vara v = (Vara)o; return this.pris – v.pris; } } // i t.ex. main Vara[] varor = new Vara[3]; varor[0] = new Vara("Bil", 50000); varor[1] = new Vara("Läsk", 10); varor[2] = new Vara("Pizza", 50); Arrays.sort(varor);