Presentation laddar. Vänta.

Presentation laddar. Vänta.

Sökning och sortering Linda Mannila 27.11.2007.

Liknande presentationer


En presentation över ämnet: "Sökning och sortering Linda Mannila 27.11.2007."— Presentationens avskrift:

1 Sökning och sortering Linda Mannila

2 Denna föreläsning Sökningsalgoritmer Sorteringsalgoritmer Modulen time

3 Sökning Vanlig uppgift i datorsammanhang Exempel: Olika sökalgoritmer
Hitta en viss person i ett register Söka efter ett telefonnummer I sorteringsalgoritmer (hitta max, hitta min) Olika sökalgoritmer Sekventiell (linjär) sökning Binärsökning

4 Sekventiell (linjär) sökning
Linear search Går igenom alla element i en lista från början Jämför det aktuella elementet i listan med det vi söker efter Om det element vi tittar på är det vi söker  har hittat elementet och kan sluta Annars gå framåt ett steg i listan, jämför med det vi söker efter etc. Om vi kommer till slutet av listan och inte har hittat elementet  avsluta

5 Sekventiell sökning Fördelar? Nackdelar? Simpel
Snabb om det eftersökta elementet finns i början av listan Nackdelar? Långsam om det eftersökta elementet inte finns i början av listan (kräver en massa jämförelser)

6 Binärsökning Binary search För sorterade datasamlingar
Börjar med att titta på det mittersta elementet i en lista, jämför det med det vi söker efter Om det vi söker efter är mindre än det vi tittar på  kan skippa högra delen av listan och upprepa processen på den vänstra halvan Om det vi söker är större än det vi tittar på  skippa vänstra halvan Om det vi söker är det vi tittar på  avsluta, vi har hittat vårt element

7 Binärsökning Sorted Array
Compare X to the middle value of the array. If X=Y, (the middle element) we are done. If X < Y, we continue our search confine the search to first half only. If X > Y, we continue our search confine the search to second half.

8 Binärsökning Fördelar? Nackdelar? Snabb Kräver att data är sorterat...
Men det kan lösas med en snabb sorteringsalgoritm, så i praktiken inget problem

9 Sökning linear_for.py linear_while.py binary.py

10 Tidtagning Modulen time >>> import time
>>> dir(time) ['__doc__', '__name__', 'accept2dyear', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname']

11 Exempel - time Kan användas för tidtagning
# Returnerar info om den lokala tiden som en tupel >>> time.localtime() (2007, 11, 26, 17, 30, 16, 0, 330, 0) # Returnerar info om den lokala tiden som en sträng >>> time.asctime() 'Mon Nov 26 17:32: ' # Returnerar info om Greenwich-tiden som en tupel >>> time.gmtime() (2007, 11, 26, 15, 30, 19, 0, 330, 0) # Returnerar processorns tid i sekunder >>> time.clock() # Pausar exekveringen för så många sekunder som man # skickar som argument till funktionen >>> time.sleep(2) Kan användas för tidtagning

12 Exempel import time lista = range(100000)
# t1 innehåller starttiden (i sekunder) t1 = time.clock() # Kör funktionen linear_search(lista, 750) # t2 innehåller sluttiden (i sekunder) t2 = time.clock() # Räknar ut exekveringstiden (i sekunder) exek_tid = t2-t1 # Skriver ut tiden (i sekunder och millisekunder) print "Exekveringen tog %0.4f sekunder" % exek_tid print "Exekveringen tog %0.4f millisekunder" % (exek_tid * 1000)

13 Sökning Exempel med tidtagning
search.py search_avg.py Med lite avancerade features för den som är intresserad Illustrerar hur man kan skicka funktioner som argument till en annan funktion Krävs ej för kursen search_func_as_params.py search_func_as_params_nicer_output.py

14 Sortering Bubble sort Selection sort Insertion sort Merge sort
Quicksort Rekursiva  torsdagens tema

15 Bubble sort Enklaste sorteringsalgoritmen
Tyvärr också den minst effektiva Grundidén är att gå igenom en lista med element upprepade gånger, se på två närliggande element åt gången och byta plats på dem ifall de kommer i fel ordning Flashdemo: bubble.swf

16 Selection sort Från början är hela listan osorterad
Grundidén är att hela tiden välja ut det största elementet i den osorterade delen av listan och byta plats med det och det sista elementet i den osorterade delen av listan. Samtidigt ökar antalet element i den sorterade delen med ett och antalet i den osorterade delen minskar med ett. Flashdemo: selection.swf

17 Insertion sort Från början är hela listan osorterad.
Grundidén är att samla de sorterade elementen i rätt ordning i början av listan. Ett element i taget från den osorterade delen insätts på rätt plats i den sorterade delen. Samtidigt ökar antalet element i den sorterade delen med ett och antalet i den osorterade delen minskar med ett. Flashdemo: insertion.swf


Ladda ner ppt "Sökning och sortering Linda Mannila 27.11.2007."

Liknande presentationer


Google-annonser