Een circulair verschoven rij is een gesorteerde rij met \(n\) verschillende gehele getallen die circulair verschoven is over \(k\) posities.
Wanneer de waarde van \(k\) gekend is, dan kan het grootste getal uit de rij gemakkelijk worden bepaald in \(\Theta(1)\) tijd. Veronderstel nu dat de waarde van \(k\) niet gegeven is. Ontwerp een \(\Theta(\log n)\) algoritme dat het grootste getal uit de rij bepaalt.
Implementeer de gegeven interface MaximumBepaler
1 in een klasse MijnMaximumBepaler
. Implementeer hiervoor de methode public int bepaalMaximum(int... rij)
. Als input neemt deze methode een circulair verschoven rij en als output geeft deze het maximale element van deze rij terug. Als de input leeg is dan verwachten we dat je een IllegalArgumentException
gooit.
Opmerking: De methode bepaalMaximum
maakt gebruik van een variabel aantal argumenten. Een circulair verschoven rij kan worden meegegeven door een reeks getallen als argument mee te geven, gescheiden door komma’s. Bij het voorbeeld wordt dit bepaalMaximum(35, 42, 5, 15, 27, 29)
. De inputreeks wordt bewaard in een array.
Gebruik eventueel de testklasse SimpleTest
2 om je oplossing lokaal te testen. Je kan hierin eenvoudig extra testgevallen toevoegen.