Presentation laddar. Vänta.

Presentation laddar. Vänta.

Programmeringsteknik för K och Media

Liknande presentationer


En presentation över ämnet: "Programmeringsteknik för K och Media"— Presentationens avskrift:

1 Programmeringsteknik för K och Media
Föreläsning 7 Sökning (Kap 13.2) Linjärsökning Binärsökning Sortering (Kap 13.1) Urvalssortering Insättningssortering Linda Kann, Nada

2 Strängjämförelse För jämförelse av strängar finns metoderna
public boolean equals(String s) public boolean equalsIgnoreCase(String s) För att avgöra bokstavsordning finns public int compareTo(String s) Anropet s1.compareTo(s2) ger negativt värde om s1 kommer före s2 positivt värde om s1 kommer efter s2 noll om strängarna är lika

3 Linjärsökning Var i en vektor finns ett visst värde?
För String finns metoden indexOf(char c) som ger index för första förekomsten av tecknet c eller –1 när tecknet inte finns. När vektorn inte är sorterad är det lämpligt att undersöka värdena i tur och ordning. Det kallas linjärsökning (linear search).

4 Linjärsökning - metod //Söker med linjärsökning efter nyckel
//Om nyckel inte finns returneras -1 public int linjSök(int nyckel) { for (int i=0; i<n; i++) if (v[i]==nyckel) return i; return -1; }

5 Binärsökning När vektorn är sorterad kan man söka snabbare. Algoritm:
Beräkna intervallets mittpunkt. Avgör om det sökta värdet finns i första eller andra halvan och fortsätt söka där. Upprepa tills du hittar det sökta värdet eller tills intervallet krympt till ingenting (då fanns inte det sökta värdet med).

6 Binärsökning - metod public int binSök(int nyckel) { int min=0;
int max=n-1; while (min<max) { int mitt=(min+max)/2; if (v[mitt]==nyckel) return mitt; else if (v[mitt]<nyckel) min=mitt+1; max=mitt-1; } return -1;

7 Urvalssortering En enkel metod för att sortera n värden. Algoritm:
Välj ut det minsta värdet. Byt plats på minsta och första värdet. Fortsätt på samma sätt med resten av värdena.

8 Urvalssortering - metod
//Sorterar hela vektorn v public void urvalsSortera() { for (int i=0; i<n-1; i++) { int min=i; for (int j=i+1; j<n; j++) if (v[j]<v[min]) min=j; int temp=v[min]; v[min]=v[i]; v[i]=temp; }

9 Insättningssortering
En enkel metod för att sortera in ett nytt värde i en redan sorterad vektor med. Algoritm: Är värdet större än det sista värdet? Lägg isåfall det nya värdet sist och allt är klart. Annars: Börja från slutet av vektorn och flytta värden ett steg (från plats i till plats i+1) tills det nya värdet är större än värdet på plats i. 13 14 14 17 19

10 Insättningssortering - metod
//Sorterar in talet nytt på rätt plats i vektorn v public void sättIn(int nytt) { int i=n-1; if (n==0) v[0]=nytt; else { while (i>=0 && nytt<v[i]) { v[i+1]=v[i]; i--; } v[i+1]=nytt; n++;

11 Sökning - prestanda Linjärsökning en vektor med n element kräver maximalt n jämförelser. Binärsökning i en vektor med n element kräver maximalt 2logn jämförelser. För stora vektorer går alltså binärsökning betydligt snabbare, vilket är ett skäl till att man ofta vill ha sorterade vektorer.

12 Sortering - prestanda Insättningssortering och urvalssortering av n värden kräver max n2/2 jämförelser. Det finns snabbare metoder för sortering, som bara kräver n 2log n jämförelser.


Ladda ner ppt "Programmeringsteknik för K och Media"

Liknande presentationer


Google-annonser