Функция случайного выбора определяется как
Shuffle( A[n-1],A[n-2].....A[1],A[0]) = A[n-2]A[n-3]......A[1],A[0],A[n-1]
где i в A [i] представляет I-й бит в двоичном представлении индекса в массиве.
Например, перемешивание третьего элемента в массиве - это пятый элемент массива. то есть ..
Shuffle (A [010]) = A [100]. (Предполагая размер массива как 8 элементов)
Мы видим, что n-1-й бит '0' смещен влево. Таким образом, значение A [4] копируется в A [2]. Можем ли мы выполнить это без использования временного массива для всех элементов в массиве ...
Я хочу реализовать эту функцию в простом простом C, но я просто не мог понять, как изменить биты ...
Предложения, пожалуйста ...