Een circulair verschoven rij is een gesorteerde rij met \(n\) verschillende gehele getallen die circulair verschoven is over \(k\) posities.

Voorbeelden

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 MaximumBepaler1 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 SimpleTest2 om je oplossing lokaal te testen. Je kan hierin eenvoudig extra testgevallen toevoegen.