Skning och sortering Linda Mannila 27 11 2007
- Slides: 17
Sökning och sortering Linda Mannila 27. 11. 2007
Denna föreläsning Sökningsalgoritmer n Sorteringsalgoritmer n Modulen time n
Sökning n Vanlig uppgift i datorsammanhang n Exempel: n n Hitta en viss person i ett register Söka efter ett telefonnummer I sorteringsalgoritmer (hitta max, hitta min) Olika sökalgoritmer n n Sekventiell (linjär) sökning Binärsökning
Sekventiell (linjär) sökning n Linear search n Går igenom alla element i en lista från början n n 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
Sekventiell sökning n Fördelar? Simpel n Snabb om det eftersökta elementet finns i början av listan n n Nackdelar? n Långsam om det eftersökta elementet inte finns i början av listan (kräver en massa jämförelser)
Binärsökning n Binary search n För sorterade datasamlingar n Börjar med att titta på det mittersta elementet i en lista, jämför det med det vi söker efter n n n 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
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.
Binärsökning n Fördelar? n n Snabb Nackdelar? Kräver att data är sorterat. . . n Men det kan lösas med en snabb sorteringsalgoritm, så i praktiken inget problem n
Sökning linear_for. py n linear_while. py n binary. py n
Tidtagning n Modulen time >>> import time >>> dir(time) ['__doc__', '__name__', 'accept 2 dyear', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime', 'struct_time', 'timezone', 'tzname']
Exempel - time # 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: 04 2007' # 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() Kan 662. 06464536693909 användas för tidtagning # Pausar exekveringen för så många sekunder som man # skickar som argument till funktionen >>> time. sleep(2)
Exempel import time lista = range(100000) # t 1 innehåller starttiden (i sekunder) t 1 = time. clock() # Kör funktionen linear_search(lista, 750) # t 2 innehåller sluttiden (i sekunder) t 2 = time. clock() # Räknar ut exekveringstiden (i sekunder) exek_tid = t 2 -t 1 # Skriver ut tiden (i sekunder och millisekunder) print "Exekveringen tog %0. 4 f sekunder" % exek_tid print "Exekveringen tog %0. 4 f millisekunder" % (exek_tid * 1000)
Sökning n Exempel med tidtagning n n n search. py search_avg. py Med lite avancerade features för den som är intresserad n n 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
Sortering Bubble sort n Selection sort n Insertion sort n Merge sort n Quicksort n Rekursiva torsdagens tema
Bubble sort n Enklaste sorteringsalgoritmen n Tyvärr också den minst effektiva n 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 n Flashdemo: bubble. swf
Selection sort n Från början är hela listan osorterad n 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. n Samtidigt ökar antalet element i den sorterade delen med ett och antalet i den osorterade delen minskar med ett. n Flashdemo: selection. swf
Insertion sort n Från början är hela listan osorterad. n 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. n n n Flashdemo: insertion. swf
- Skning
- Stormossen sortering
- Topologisk sortering
- Stærke sammenhængskomponenter
- Stabile sorteringsalgoritmer
- Likheter mellan hinduism och buddhism
- Konkretia
- Linda holzer
- Linda mook
- Linda crichton
- Linda wüstefeld
- Linda carlos
- Rubrick
- Medical terminology lesson plans
- Linda, chuck close
- Linda coordination language
- Linda r greene
- Parrafo de apertura