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

Relevanta dokument
Laboration 13, Arrayer och objekt

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

Tentamen , Introduktion till Java, dtaa98, dtea53

Sökning och sortering

Föreläsning 6: Metoder och fält (arrays)

I ett program hantera man ofta samlingar av objekt av samma typ.

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

Föreläsning 3-4 Innehåll

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

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

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

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

JAVAUTVECKLING LEKTION 8

Magnus Nielsen, IDA, Linköpings universitet

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

int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15}; // initierat fält 8 element

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

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

Algoritmer. Två gränssnitt

Föreläsning 2, vecka 8: Repetition

PROGRAMMERING-Java TENTAMINA

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Laboration A Objektsamlingar

Föreläsning REPETITION & EXTENTA

Föreläsning 8: Exempel och problemlösning

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

Tentamen OOP

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

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

OOP Objekt-orienterad programmering

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

TDDC77 Objektorienterad Programmering

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

Arrayer (fält)

Instuderingsfrågor, del D

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.

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016

Del A (obligatorisk för alla)

Metoder - en funktion: medel

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Lösningsförslag: Instuderingsfrågor, del D

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

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

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

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

Del A (obligatorisk för alla)

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

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

TDIU01 - Programmering i C++, grundkurs

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

Föreläsning 11 Datastrukturer (DAT037)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Tentamen , Grundläggande programmering i Java

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

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

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

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

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

Föreläsning 8. Klassen String Mer om fält Klassen ArrayList

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

DELPROV 1 I DATAVETENSKAP

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Föreläsning 5. Rekursion

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

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

Anteckningar 1: Grundläggande saker

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Lektion 7. Datateknik A, Java I, 5 poäng

Objektorienterad programmering i Java

Sökning och sortering. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista

Introduktion till Datalogi DD1339. Föreläsning 5 13 okt 2014

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

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

Lösningar för tenta 2 DAT043,

Sökning och sortering

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

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Tentamen FYTA11 Javaprogrammering

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

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

for-satsen Fält for-satsen Föreläsning 8 (OH-bilder 7) for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende:

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

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

Det finns många flaggor till g++,

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

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

Föreläsning 7. for-satsen Fält

2D1342 Programkonstruktion för F1, ht 2006

OOP Objekt-orienterad programmering

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

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

Transkript:

1 Standardalgoritmer En algoritm är en beskrivning av en metod för att låsa någon uppgift. Man specificerar indata och utdata. Indatat ges av metodargument och utdata ges som regel av returtypen. 1.1 Swap En swap innebär att man byter innehållet i två variabler eller objekt. Den beskrivs inte som en metod utan skrivs i det programavsnitt där det behövs. Ex int i = 4; int j = 9; // j innehåller 9, i innehåller 4 // swap int tmp = i; i = j; j = tmp; // j innehåller 4, i innehåller 9 Om ma istället vill använda String-objekt String s1 = "Hello"; String s2 = "World"; // s1 innehåller Hello och s2 innehåller World // swap String tmp = s1; s1 = s2; s2 = tmp; // s1 innehåller World och s2 innehåller Hello 1.2 Sök minsta värdet i en array En metod som söker efter det minsta värdet i en array av flyttal. Funktionen returnerar det index som det minsta talet befinner sig på. Indata: En array med värden Utdata: index för det minsta elementet Algoritmen antag att det minsta talet m befinner sig på den första positionen index i=0 iterera igenom övriga element, om ett mindre tal än m upptäcks, låt m vara det mindre talet, och i motsvarande index. Då arrayen är genomlöpt har det minsta elementet funnits Algoritmen är användbar för alla värden som kan ordnas i någon ordning. Algoritmen kan formuleras för flyttal med en metod som har signaturen int findmin(double [] array) Exempel

import java.util.*; public static int findmin(double [] array){ int min = 0; for(int i =1; i<array.length; i++){ if ( array[i]<array[min]){ double myarray[]= new double[10]; System.out.println("Mata in tal nr " + (i+1) ); myarray[ i ]= keyb.nextdouble(); int minpos = findmin(myarray); System.out.println("Minsta värdet finns på position:"+ minpos); 1.2.1 Övning: Skriv om programmet så att det även letar rätt på det största värdet. Definiera en metod findmax på samma sätt som findmin. 1.3 Array sortering En enkel metod att sortera element i en array är metoden sök-minsta-byt. Metoden går ut på att man börjar med att leta igenom hela arrayen efter det minsta elementet i arrayen, man tar då det minsta elementet och byter plats med elementet först i arrayen. Man kan nu betrakta detta första element som att vara sorterat. Den osorterade delen av arrayen är nu alla element utom det sista. Den kvarvarande sorteringsuppgiften är alltså att sortera en array som består av ett färre element än tidigare. Proceduren upprepas på denna mindre array, tills bara ett element återstår. Detta ensamma element är även det i ordning. Metoden sorterar arrayen i stigande ordning. Efter att det första minsta elementet funnits, byter vi plats på det minsta och första elementet. I nästa steg betraktar vi inte fältets första element eftersom det redan sorterats. Före byte 3.0 2.14 9.3 5.0 4.98 1.2 3.4 3.8 2.6 0 1 2 3 4 5 6 7 8 Efter byte 1.2 2.14 9.3 5.0 4.98 3.0 3.4 3.8 2.6 0 1 2 3 4 5 6 7 8 Elementet på index 0 är sorterat, vi behöver därefter bara betrakta element 1-8 Sökningen efter det minsta elementet måste därför börja från position ett, inte position noll som tidigare. På grund av detta måste vi inkludera detta startindex i vår sökminsta-algoritm.

1.3.1 Algoritm Sortering sök minsta, byt (selection sort) Indata: en array med flyttal, kalla elementen e0... en. en är sista elementet, e0 är första Utdata: den sorterade arrayen - Iterera över alla element e0... en-1 (första till näst sista), kalla aktuellt element ei o Finn det minsta elementet emin i fältet ei till en o Byt värden på elementet emin och ei import java.util.*; public static int findmin(double [] array, int startindex){ int min = startindex; for(int i =startindex+1; i<array.length; i++){ if ( array[i]<array[min]){ public static void sort(double [] array){ for(int i = 0; i<array.length-1;i++){ // sök minsta int idx = findmin(array, i); // byt double tmp=array[idx]; array[idx]=array[i]; array[i]=tmp; double myarray[]= new double[10]; System.out.println("Mata in tal nr " + (i+1) ); myarray[ i ]= keyb.nextdouble(); sort(myarray); System.out.println("De inmatade värdena sorterade:"); System.out.println(i+":"+myArray[i] ); Resultatet av algoritmen är den sorterade arrayen. Sorteringen sker dierkt i arrayen och ges därför inte som ett returnvärde. 1.3.2 Övning: Skriv om funktionen så att den sorterar i fallande ordning. Exempel: Sortera inmatade namn i alfabetisk ordning

Algoritmen är densamma. Den väsentliga skillnaden är hur jämförelsen sker i findmin. En Stringinstans jämförs med en annan med compareto, eller comparetoignorecase. String s1 = "Hallå"; String s2 = "Hello"; if ( s1.compareto( s2 ) < 0 ){ System.out.println("Hallå är före Hello"); else{ System.out.println("Hallå är efter Hello"); Avsnittet ger som resultat att Hallå är före Helllo. En egenhet vid jämförelser av texter är att små bokstäver, gemener, kommer efter versaler. Det har att göra med hur teckentabellen är uppställd. Metoden comparetoignorecase tar ingen hänsyn till gemen/versal vid jämförelsen. String s1 = "hallå"; String s2 = "Hello"; if ( s1.compareto( s2 ) < 0 ){ System.out.println("hallå är före Hello"); else{ System.out.println("hallå är efter Hello"); if ( s1.comparetoignorecase( s2 ) < 0 ){ System.out.println("hallå är före Hello"); else{ System.out.println("hallå är efter Hello"); Första jämförelsen ger hallå är efter Hello, den andra jämförelsen ger hallå är före Hello.

import java.util.*; public static int findmin(string [] array, int startindex){ int min = startindex; for(int i =startindex+1; i<array.length; i++){ if ( array[i].compareto(array[min]) < 0){ public static void sort(string [] array){ for(int i = 0; i<array.length-1;i++){ // sök minsta int idx = findmin(array, i); // byt String tmp=array[idx]; array[idx]=array[i]; array[i]=tmp; String myarray[]= new String[5]; System.out.println("Mata in namn " + (i+1) ); myarray[ i ]= keyb.next(); sort(myarray); System.out.println("De inmatade namen sorterade:"); System.out.println( myarray[i] );