Shuffle-Sortierung blockieren
Die Block-Shuffle-Sortierung ist eine (eher künstliche) Methode zum Sortieren einer Liste. Es funktioniert wie folgt, anhand eines Beispiels.
[6, 1, 0, 3, 2, 4, -2, -1]
Break list into contiguous blocks
[6][1, 0][3, 2, 4][-2, -1]
Sort each block
[6][0, 1][2, 3, 4][-2, -1]
Sort blocks lexicographically
[-2, -1][0, 1][2, 3, 4][6]
Concatenate
[-2, -1, 0, 1, 2, 3, 4, 6]
Die Aufteilung in zusammenhängende Blöcke kann beliebig gewählt werden. Nicht alle Auswahlmöglichkeiten von Blöcken führen jedoch am Ende zu einer sortierten Liste:
[6, 1, 0, 3, 2, 4, -2, -1]
[6, 1, 0][3, 2, 4][-2, -1]
[0, 1, 6][2, 3, 4][-2, -1]
[-2, -1][0, 1, 6][2, 3, 4]
[-2, -1, 0, 1, 6, 2, 3, 4]
Wenn alle Blöcke die Länge 1 haben oder wenn es nur einen Block gibt, wird das Ergebnis natürlich sortiert. Dies sind aber eher Extremfälle. In dieser Herausforderung besteht Ihre Aufgabe darin, ein Gleichgewicht zwischen der Anzahl der Blöcke und der maximalen Länge eines Blocks zu finden.
Die Aufgabe
Ihre Eingabe ist eine nicht leere Liste von Ganzzahlen L , die in einem beliebigen vernünftigen Format eingegeben werden. Ihre Ausgabe soll die kleinste Ganzzahl N sein, so dass L blockweise sortiert werden kann, so dass die Anzahl der Blöcke und die Länge jedes Blocks höchstens N beträgt .
Die niedrigste Byteanzahl in jeder Sprache gewinnt. Es gelten die Standardregeln für Code-Golf .
Testfälle
[5] -> 1
[1,2] -> 2
[0,2,1,-1] -> 3
[-1,0,2,1] -> 2
[9,3,8,2,7] -> 4
[9,2,8,3,7] -> 3
[5,9,3,7,2,4,8] -> 7
[-1,-2,1,2,-1,-2,7] -> 4
[6,1,0,3,2,4,-2,-1] -> 4
[12,5,6,-6,-1,0,2,3] -> 3
[1,0,1,0,1,0,1,0,1,0] -> 6
[1,2,1,3,1,2,3,2,4,3] -> 5
[7,7,7,7,8,9,7,7,7,7] -> 4