Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Complexiteit Huiswerkopgave 1

a. Het aantal keren dat de test in regel 6 uitgevoerd wordt is volledig afhankelijk van de grootte van
n. De eerste keer dat de buitenste loop uitgevoerd wordt, wordt elk element vergeleken met het tot
dan toe gevonden kleinste element. Hier voor zijn n-1 vergelijkingen nodig. Dit bepaalt dus hoe
vaak de while condititie in regel 4 wordt bekeken en dus hoe vaak die while loop wordt uitgevoerd.

De gevonden posititie mini bepaalt daarna hoe vaak er gewisseld moet worden. Dit bepaald dus ook
hoe vaak de condititie van de while loop van regel 10 wordt bekeken en dus hoe vaak deze while
loop wordt uitgevoerd.

Dus het vergelijken van de array elementen en het verwisselen van de elementen bepalen hoe vaak
de twee binnenste loop worden uitgevoerd en zijn daardoor dus een goede maat voor de
complexiteit van het algoritme.

b. Geen andere operatie wordt vaker uitgevoerd dan de arrayvergelijking. Dit is alleen afhankelijk
van de grootte van n. Het aantal arrayvergelijkingen zou een goede maat zijn voor de complexiteit.
Het aantal verwisselingen wordt altijd minder vaak uitgevoerd dan het aantal arrayvergelijkingen en
is alleen geen goede maat voor de complexiteit.

c. Het aantal arrayvergelijkingen hangt af van de grootte van n. De volgorde van de getallen in A
maakt niet uit. De eerste keer dat de buitenste loop wordt uitevoerd, worden alle elementen behalve
de eerste vergeleken met het tot dan toe gevonden kleinste element. Hiervoor zijn n-1
vergelijkingen nodig. De tweede keer dat de buitenste loop wordt uitgevoerd, staat het eerste
element op de juiste plaats en wordt niet meer meegenomen in de array vergelijkingen. Dan worden
er n-2 vergelijkingen gedaan.

He totale aantal array vergelijkingen wordt dan:

1 1 1
𝑛 − 1 + 𝑛 − 2 + 𝑛 − 3+. . .1 = (𝑛 − 1)(𝑛) = 𝑛2 − 𝑛
2 2 2

Het aantal verwisselingen is wel afhankelijk van de inhoud van A. In het beste geval is het aantal
verwisselingen 0. Dit komt alleen voor als een invoerrijtje al gesorteerd is:

1 2 3 ..... n.

d. Voor even ℓ: Er worden steeds twee elementen verwisseld. ℓ elementen omdraaien kost dus

verwisselingen.
2
Voor oneven ℓ: Er worden steeds twee elementen omgedraaid, maar het middelste elementen kan op

zijn plaats blijven staan. Dit kost⌊2⌋vergelijkingen.
e.
i) In het slechste geval wordt steeds het maximaal aantal verwisselingen gedaan. Dat zijn voor even
n dan:
𝑛
i=1 verwisselingen
2
𝑛−1
i=2 ⌊ ⌋verwisselingen
2
𝑛−2
i = 3: verwisselingen
2
𝑛−3
i=4 ⌊ ⌋verwisselingen
2

2
i = n-1 2 = 1verwisselingen

Het totale aantal verwisselingen zijn dan:

1 𝑛 𝑛 1 𝑛 𝑛 1
( )( + 1) + ( − 1)( ) = 𝑛2
2 2 2 2 2 2 4

In het slechtste geval zijn het aantal vergelijkingen en het aantal verwisselingen dan:

1 2 1 1 3 1
𝑛 − 𝑛 + 𝑛2 = 𝑛2 − 𝑛
2 2 4 4 2

ii) Een manier om het maximaal aantal verwisselingen te krijgen, is om steeds kleinste element
steeds helemaal achter in het array te zetten. Dit gebeurt bij invoerrijtjes die bestaan uit de getallen
1 t/m n waarbij de even getallen vooraan staan van klein naar groot gesorteerd en de oneven
getallen achteraan staan omgekeerd gesorteerd.

Een voorbeeldrijtje:

2 4 6 8 10 | 97531
---------------------------------------- -------------------------------------------------
even getallen, oplopen gesorteerd Oneven getallen, omgekeerd gesorteerd

f.

2 4 5 3 1 - Zelfde als bij e ii

Bij oneven getallen kan het kleinste getal op de een na laatste plek staan. Dit geeft nog steeds het
maximale aantal mogelijke verwisselingen, waarbij de eerste n-1 getallen omgewisseld worden
i.p.v. dat het middelste getal op zijn plaats blijft staan. Bij de volgende buitenste loop wordt dan wel
naar een even rijtje gekeken. Daar moet het kleinste getal weer wel achteraan komen te staan door
de wissels.

Dus voor een rijtje van 4 en 5 geeft 4 5 het maximale aantal verwisselingen.

Voor een rijtje van 3 4 en 5 geeft omwisselen en 3 er tussen zetten of 3 erachter zetten het maximale
aantal verwisselingen:

534
453
voor een rijtje van 4 t/m 2 moet het kleinste getal steeds weer achteraan staan.

5342

4532

Voor een rijtje van 1 t/m 5 is het dan of de 2 naar voren halen en de 1 er achter aan zetten of de 1
voor de 2 te zetten.

2 4 5 3 1 – al genoemd

45312

25341

53412

g. Elke keer als n 2 groter is geworden, verdubbelt het aantal worst case rijtjes beginnend bij n=3
geeft 2 worst case rijtjes (n = 2 geeft 1 worst case rijtje en bij n = 1 hoeft niets gesorteerd te
worden).

Dus voor het aantal worst case rijtjes geldt:

𝑛−1
⌊ ⌋
2

You might also like