Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.



Relevanta dokument
Föreläsning ALGORITMER: SÖKNING, REGISTRERING, SORTERING

Arrayer med primitiva datatyper

Tentamen. Lösningsförslag

Föreläsning REPETITION & EXTENTA

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Laboration 13, Arrayer och objekt

Tentamen i Grundläggande programmering STS, åk 1 lördag

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Tentamen, EDA501 Programmering M L TM W K V

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Objektorienterad programmering i Java

Tentamen i Programmering

TENTAMEN OOP

Tentamen, EDAA20/EDA501 Programmering

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Tentamen i Programmeringsteknik I

Tentamen i Grundläggande programmering STS, åk

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

OOP Tentamen

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

PROGRAMMERING-Java TENTAMINA

Tentamen i Programmeringsteknik I,, KandMa/Fy,

OOP Omtenta

Malmö högskola 2007/2008 Teknik och samhälle

Tentamen i Programmeringsteknik I, ES,

Tentamen i Grundläggande programmering STS, åk 1 fredag

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Föreläsning 3-4 Innehåll

Den som bara har en hammare tror att alla problem är spikar

Tentamen i Grundläggande programmering STS, åk 1 fredag

DELPROV 1 I DATAVETENSKAP

JAVAUTVECKLING LEKTION 8

Tentamen. Grundläggande programmering i Java A 5p, DTAA

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Del A (obligatorisk för alla)

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

OOP Omtenta

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Tentamen FYTA11 Javaprogrammering

Grundläggande programmering med C# 7,5 högskolepoäng

Instuderingsfrågor, del D

Tentamen OOP

Malmö högskola 2008/2009 CTS

Programmering för språkteknologer II, HT2011. Rum

Modern Programmering (2546) Tentamen lördag

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

JAVA Mer om klasser och objektorientering

Sökning och sortering

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

D0010E. Hello world! Nedräkning. Sågtand. Övningsuppgifter i Eclipse. Skapa ett program som skriver ut "Hello world" på skärmen.

Del A (obligatorisk för alla)

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Laboration A Objektsamlingar

Föreläsning 1 Datastrukturer (DAT037)

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

"if"-satsen. Inledande programmering med C# (1DV402)

Algoritmer. Två gränssnitt

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Chapter 4: Writing Classes/ Att skriva egna klasser.

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

PROGRAMMERING-Java Omtentamina

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Tentamen för TTIT71 Programmering kl Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Laboration 12, Arrayer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

1 Standardalgoritmer. 1.1 Swap. 1.2 Sök minsta värdet i en array

DAT043 Objektorienterad Programmering

OOP Omtenta

TENTAMEN OOP

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

HI1024 Programmering, grundkurs TEN

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

OOP Omtenta

OOP Tentamen

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

OOP Tenta

Tentamen i Algoritmer & Datastrukturer i Java

Lösningsförslag, tentamen FYTA11 Javaprogrammering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Tentamen i Programmeringsteknik I

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

OOP Exempel Tentamen 2007

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Transkript:

Sortering Den sorteringsalgoritm som vi använder oss kallas selection sort (urvalssortering) och är en av många existerande sorteringsalgoritmer. Dess funktionssätt beskrivs kanske bäst genom ett konkret scenario: Du befinner dig i ett rum med en bokhylla. Bokhyllan har följande egenskaper: Bokhyllan utgörs av fack där varje fack kan innehålla en och endast en bok. Varje fack har en unik adress i form av ett heltal. Det första facket har adressen 0, det andra har adressen 1, det tredje har adressen 2, och så vidare. Antalet fack är detsamma som antalet böcker. När du kommer in i rummet så står alla böcker i oordning. Din uppgift är att ordningsställa böckerna så att det första facket (adress 0) innehåller den bok som har det tidigaste publikationsåret. Därefter ska böckerna placeras i en sådan ordning att det sista facket innehåller den senast publicerade boken. Annorlunda uttryckt ska du sortera böckerna i stigande ordning med avseende på publikationsår. I det aktuella exemplet innehåller bokhyllan tio böcker och kan schematiskt illustreras enligt nedan: 1989 1969 2001 2004 1994 2001 1921 1983 1978 0 1 2 3 4 5 6 7 8 Till din hjälp har du papper och penna. Ett alternativ är att mer eller mindre planlöst ta dig an uppgiften. Ett annat och i det här sammanhanget bättre alternativ är att gå systematiskt tillväga genom att följa nedanstående steg-för-stegbeskrivning (som i allt väsentligt återspeglar algoritmen selection sort). 1. Det första du ska göra är att placera rätt bok i det första facket (adress 0). Detta fack är din aktuella position. 2. Gör ett antagande om att boken på din aktuella position innehåller det tidigaste publikationsåret. Gör en anteckning om att detta fack innehåller den hittills lägsta publikationsåret. 3. Med start i facket direkt till höger om din aktuella position, sök successivt genom resterande fack om det finns någon bok med tidigare publikationsår genom att jämföra med det fack som du antecknat på pappret. Om detta är fallet, gör en ny anteckning om vilken plats som innehåller det hittills lägsta publikationsåret. 4. När du sökt genom samtliga fack till höger om din aktuella position så byter du plats på den bok som finns på din aktuella position och den bok som finns på den plats som du antecknat på ditt papper. Om din aktuella position är samma plats som finns antecknad på ditt papper så behöver du inte byta plats på böckerna. 5. Din nya aktuella position är platsen direkt höger om din föregående aktuella position. Om din nya aktuella position är det sista facket i bokhyllan så ska du avbryta arbetet (eftersom det är klart). I annat fall ska du återgå till steg 2. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.

Slumptal.java class Slumptal private int[] tabell; public Slumptal(int antal) tabell = new int[antal]; for (int i = 0; i < antal; i++) tabell[i] = (int)(math.random()*1000.0); public void sortera() int posmin; int temp; for (int i = 0 ; i < tabell.length - 1; i++) posmin = hittaminsta(i); temp = tabell[i]; tabell[i] = tabell[posmin]; tabell[posmin] = temp; private int hittaminsta(int start) int minsta = start; for (int i=start + 1; i < tabell.length; i++) if (tabell[i] < tabell[minsta]) minsta = i; return minsta; public void skrivuttabell() for (int i=0; i < tabell.length; i++) System.out.println(i+": "+tabell[i]); Sortering_1.java class Sortering_1 public static void main(string[] args) Slumptal stal = new Slumptal(10); System.out.println("-------- Osorterad ---------"); stal.skrivuttabell(); stal.sortera(); System.out.println("-------- Sorterad ---------"); stal.skrivuttabell();

ArtikelSamlingSortering.java class ArtikelSamlingSortering public static void main(string[] args) Paper p; PaperCollection pc = new PaperCollection(100); int antalpapers; p = new Paper(); p.setauthor("wexelblat, A."); p.setyear("1995"); p.settitle("an Approach to Natural Gesture in Virtual Environments"); p.setjournal("acm Transactions on Computer-Human Interaction"); p.setvolume("2"); p.setissue("3"); pc.addpaper(p); p = new Paper(); p.setauthor("wolf, C. C."); p.setyear("1992"); p.settitle("a Comparative Study of Gestural, Keyboard, and Mouse Interfaces"); p.setjournal("behaviour and Information Technology"); p.setvolume("11"); p.setissue("1"); pc.addpaper(p); System.out.println("----- Osorterad -----"); antalpapers = pc.getnumberofpapers(); for (int i=0; i < antalpapers; i++) p = pc.getpaper(i); System.out.println(p.getJournal()); pc.sortera(); System.out.println("----- Sorterad med avseende på tidskriftsnamn -----"); for (int i=0; i < antalpapers; i++) p = pc.getpaper(i); System.out.println(p.getJournal()); PaperCollection.java class PaperCollection private Paper[] collection; private int numberofpapers; Nedanstående konstruktor reserverar plats i collection-arrayen för det i parametern angivna antalet Paper-objekt. numberofpapers är ett heltalsattribut som håller ordning på det antal Paper-objekt som lagts till collection-arrayen. public PaperCollection(int maxpapers) collection = new Paper[maxPapers]; numberofpapers = 0;

Nedanstående metod lägger till det Paper-objekt som anges med parametern p. public void addpaper(paper p) collection[numberofpapers] = p; numberofpapers++; Nedanstående metod returnerar det Paper-objekt som finns lagrat i arrayen collection på den position som anges av index-parametern. public Paper getpaper(int index) return collection[index]; Nedanstående metod returnerar antal Paper-objekt som finns lagrat i collection-arrayen. public int getnumberofpapers() return numberofpapers; public void sortera() int posmin; Paper temp; for (int i = 0 ; i < numberofpapers - 1; i++) posmin = hittaminsta(i); temp = collection[i]; collection[i] = collection[posmin]; collection[posmin] = temp; private int hittaminsta(int start) String journal_1; String journal_2; int minsta = start; for (int i=start + 1; i < numberofpapers; i++) journal_1 = collection[i].getjournal(); journal_2 = collection[minsta].getjournal(); //if (journal_1.compareto(journal_2)<0) if (journal_1.comparetoignorecase(journal_2)<0) minsta = i; return minsta;

Övningsuppgifter 1. Skriv ett program som låter användaren mata in ett antal siffror. Skriv sedan ut dem både i stigande och fallande ordning. 2. Modifiera ovanstående program så att användaren får mata in strängar istället. Sortera och skriv ut i både stigande och fallande ordning. 3. Skapa ett program som kan hantera Elever och deras resultat på tentan. Programmet ska bestå av tre klasser. Klassen Elev där ni lagrar information om varje elev. Klassen Kurs som innehåller information om en viss kurs och en array bestående av de elever som är registrerade på kursen. Programmet ska kunna hantera registrering av studenter och deras resultat. Efter avslutad registerting ska eleverna och deras resultat presenteras sorterat efter högsta poäng.