Программа на Java для перемешивания массива

Опубликовано: 4 Февраля, 2022

Дан массив размера N, и задача состоит в том, чтобы перетасовать элементы массива или любую другую перестановку. Используя Java, можно подумать о заполнении массива путем генерации случайных последовательностей элементов, присутствующих в массиве. Этот алгоритм называется алгоритмом перемешивания Фишера-Йейтса.

Алгоритм тасования Фишера – Йейтса работает с временной сложностью O (n). Предполагается, что функция rand () генерирует случайное число за время O (1). Начните с последнего элемента, замените его произвольно выбранным элементом из всего массива. Теперь рассмотрим массив от 0 до n-2 (размер уменьшен на 1) и повторяем, пока мы не дойдем до первого элемента.

Пример:

 Ввод: arr [] = {1, 2, 3, 4}
Вывод : arr [] = {3, 2, 4, 1}

Ввод : arr [] = {5, 2, 3, 4}
Вывод : arr [] = {2, 4, 3, 5}

Алгоритм:

 для i от n - 1 до 1 do
       j = случайное целое число с 0 <= j <= i
       поменяйте местами a [j] и a [i]

Ниже представлена реализация описанного выше подхода:

Сложность времени: O (N), где N - размер массива.

Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .