Presentation laddar. Vänta.

Presentation laddar. Vänta.

Föreläsning 7 Sökning (Kap 13.2) –Linjärsökning –Binärsökning Sortering (Kap 13.1) –Urvalssortering –Insättningssortering.

Liknande presentationer


En presentation över ämnet: "Föreläsning 7 Sökning (Kap 13.2) –Linjärsökning –Binärsökning Sortering (Kap 13.1) –Urvalssortering –Insättningssortering."— Presentationens avskrift:

1 Föreläsning 7 Sökning (Kap 13.2) –Linjärsökning –Binärsökning Sortering (Kap 13.1) –Urvalssortering –Insättningssortering

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

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

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

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

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

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 2 logn 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 n 2 /2 jämförelser. Det finns snabbare metoder för sortering, som bara kräver n 2 log n jämförelser.


Ladda ner ppt "Föreläsning 7 Sökning (Kap 13.2) –Linjärsökning –Binärsökning Sortering (Kap 13.1) –Urvalssortering –Insättningssortering."

Liknande presentationer


Google-annonser