Op deze pagina, ga je een algoritme-timer maken om de efficiëntie van algoritmes te vergelijken.
Snap! stelt ons in staat om te melden hoe lang het duurt voordat een programma is voltooid.
huidig(e)
(
datum)
-rapporteur. Sleep het in het scriptgebied. Selecteer van
het invoermenu tijd in millisecondes.
Aan de onderkant van het Variabelenpalet staat een blok dat time function
heet. Het heeft als
invoer een rapporteurblok (met invoeren al ingevuld). Wanneer je het blok aanklikt dan voert het zijn
invoerblok uit, berekent het resultaat en rapporteert hoe lang het duurde om de berekeningen te
doen (in milliseconden).
lijst van
blok vervangen met iedere rapporteur. Je kan time function
aanpassen om te leren hoe het werkt.
In dit voorbeeld duurde het 16660 milliseconden om de lijst met gehele getallen van 1 tot 1000 te berekenen. (Het aantal dat je ziet, hangt af van hoe snel je computer is en welke andere programma's erop worden uitgevoerd.)
Dit is hoe time function
werkt:
time function
om Alex' en Bo's manieren van getallen van 1 tot n
optellen te vergelijken. Probeer het met een aantal verschillende grote getallen om te zien hoe
verschillend de algoritmes zijn qua tijd om de uitkomst te berekenen.
Een lineaire zoekopdracht betekent dat je de lijst doorzoekt waarbij je langs ieder element loopt.
Een binaire zoekopdracht betekent dat je een gesorteerde lijst in twee helften verdeelt bij iedere stap.
positie van getal in ongesorteerde lijst
werkt voor elke lijst
door element-voor-element de lijst te doorzoeken tot je een match vindt. Dit heet een
lineaire zoekopdracht omdat het programma van het begin van de lijst in een rechte
lijn zoekt tot hij een match vindt.
positie van getal in gesorteerde lijst
werkt op gesorteerde
lijsten door herhaaldelijk de lijst te verdelen in twee delen van gelijke grootte en
gebruikt de middelste waar om te beslissen welke helft nu doorzochtgaat worden om de match
te vinden. Dit heet een binaire zoekopdracht omdat binair "twee" betekent en het
algoritme de lijst in twee delen verdeelt.
Controleer de tijdsduur van deze algoritmes met invoer van verschillende grootte en beschrijf het gedrag dat je ziet. Hoe groter je de invoer maakt hoe meer je te weten komt over de efficiëntie.