Étant donné une liste d'éléments, existe-t-il un algorithme de réarrangement qui garantira qu'à terme une demi-portion sélectionnée sera d'un côté, et le reste de l'autre?Comment est-ce que je peux mélanger une liste sans aléatoire, et garantir qu'une partie des éléments apparaîtra finalement d'un côté?
Exemple: {4, 3, 10, 7, 2, 9, 6, 8, 1, 5}
Compte tenu de l'ensemble de dessus, je voudrais avoir un algorithme de mélange qui par la suite se déplace le marqués à gauche, même si l'algorithme lui-même n'a aucune idée de ce qui est et n'est pas "marqué".
{4, 3, 10, 7, 2, 9, 6, 8, 1, 5}
X X X X X
résultats acceptable serait:
{4, 10, 9, 6, 1, 3, 7, 2, 8, 5}
{1 , 9, 10, 4, 6, 2, 8, 5, 7, 3}
{1, 4, 9, 10, 6, 3, 7, 5, 8, 2} etc
Difficulté: L'algorithme ne devrait pas utiliser de nombres aléatoires pour mélanger le contenu, il devrait être un processus itératif. Alors Fisher-Yates est sorti.
N'est-ce pas une sorte d'algorithme quicksort? – DumbCoder
se sent comme des manigances =). Marqué une fois - positions ou nombres? – foret
Je ne vois pas comment un algorithme ignorant les marques pourrait respecter les marques. –