Trouver le nombre de "swaps" nécessaires pour trier un tableau donné

C'est une question d'entrevue. Un swap implique la suppression de tout élément de la matrice et d'ajouter à l'arrière de la même matrice. Étant donné un tableau d'entiers de trouver le nombre minimum de swaps nécessaires pour trier le tableau. Pouvez-vous faire mieux que O(n^2)?

Par exemple: tableau d'Entrée: [3124]. Le nombre de swaps: 2 ([3124] -> [1243] -> [1234]).

source d'informationauteur Michael