Sökning och sortering Linda Mannila 27.11.2007.

Slides:



Advertisements
Liknande presentationer
Visual Basic - Genomgång
Advertisements

Talföljder formler och summor
Joakim Eriksson Luciano Hermansen
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
1 Listor En sekvens värden av samma typ Nr 5. 2 Listor Sekvens av värden, element Variabelt antal Alla med samma typ Bara första elementet direkt åtkomligt.
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
2D1311 Programmeringsteknik med PBL
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
Logikprogrammering Ons, 25/9
Föreläsning 7 Analys av algoritmer T(n) och ordo
2D1311 Programmeringsteknik med PBL Föreläsning 3 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
Några standardalgoritmer
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
C-programmering ID120V William Sandqvist Länkad lista
Programmeringsteknik för K och Media
1 Föreläsning 3 Datalogi för E1 / 2D1343 Repetition List List operationer Stränghantering For-slingor.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
Algoritm analys och rekursiva metoder kap 5,7
DAV B04 - Databasteknik Indexering (kap 14).
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
Föreläsning 11 Arrayer.
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Programmeringsteknik
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Föreläsning 3 Programmeringsteknik och Matlab DD1312
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Listor En lista är en föränderlig ordnad samling objekt.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
TietoEnator © 2007presentationPage 1 Mina meddelanden Procapita +
Funktioner, styrstrukturer, manipulering av matriser
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
Logikprogrammering 21/10 Binära träd
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 1 IV1023 ht2013 Avancerad Datahantering med XML XSLT nikos dimitrakas Rum 8522 Läsanvisningar.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
Projekt 5.3 Gilpins och Ayalas θ-logistiska modell A Course in Mathematical Modeling - Mooney & Swift.
Föreläsning 4 Listor, tupler, och for-loopar. Listor En lista är en föränderlig ordnad samling objekt. Listor skapas med hakparenteser. lista = [12,13,14,15]
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13.
Programmeringsteknik Föreläsning 8 Skolan för Datavetenskap och kommunikation.
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
Malmö högskola Rolf Axelsson 2003/2004 DA7235, 4 poäng Fält som returvärde Sortera fält Söka i fält Tvådimensionella fält Fält och spelplan Föreläsning.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
På vissa datorer behöver du trycka på F5 för att starta bildspelet.
KPP053, HT2015 MATLAB, Föreläsning 4
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Föreläsning 3 Programmeringsteknik
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

Sökning och sortering Linda Mannila 27.11.2007

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

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

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

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)

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

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 Fördelar? Nackdelar? Snabb Kräver att data är sorterat... Men det kan lösas med en snabb sorteringsalgoritm, så i praktiken inget problem

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

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']

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: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() 662.06464536693909 # Pausar exekveringen för så många sekunder som man # skickar som argument till funktionen >>> time.sleep(2) Kan användas för tidtagning

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)

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

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

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

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

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