Учитывая список элементов, существует ли алгоритм перетасовки, который будет гарантировать, что в конечном итоге выбранная половина будет с одной стороны, а оставшаяся - с другой?
Пример: {4, 3, 10, 7, 2, 9, 6, 8, 1, 5}
Учитывая вышеизложенное, я хотел бы иметь алгоритм микширования, который в конечном итоге перемещает отмеченные влево, даже если сам алгоритмпонятия не имеет, что такое и не «помечено».
{4, 3, 10, 7, 2, 9, 6, 8, 1, 5}
XXXXX
Приемлемые результаты:
{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} и т. Д.
Сложность: Алгоритм не должениспользуйте случайные числа, чтобы смешать содержимое, это должен быть итеративный процесс. Значит, Фишер-Йейтс вышел.