Zwracanie i-tej kombinacji tablicy bitów

Biorąc pod uwagę tablicę bitów o stałej długości i liczbę zawartych w niej 0 i 1s, w jaki sposób mogę zorganizować wszystkie możliwe kombinacje tak, że zwrot i-tej kombinacji zajmuje najmniej czasu? Nie ma znaczenia, w jakiej kolejności są zwracane.

Oto przykład:

array length = 6
number of 0s = 4
number of 1s = 2

możliwe kombinacje (6! / 4! / 2!) 000011 000101 000110 001001 001010 001100 010001 010010 010100 011000 100001 100010 100100 101000 110000

problem 1. kombinacja = 000011 5. kombinacja = 001010 9. kombinacja = 010100

Z innym układem, takim jak 100001 100010 100100 101000 110000 001100 010001 010010 010100 011000 000011 000101 000110 001001 001010

zwróci pierwszą kombinację = 100001 piątą kombinację = 110000 9. kombinację = 010100

Obecnie używam algorytmu O (n), który testuje dla każdego bitu, czy jest to 1 czy 0. Problem polega na tym, że muszę obsługiwać wiele bardzo długich tablic (rzędu 10000 bitów), a więc jest nadal bardzo powoli (a buforowanie nie wchodzi w grę). Chciałbym wiedzieć, czy uważasz, że może istnieć szybszy algorytm.

Dziękuję Ci

questionAnswers(3)

yourAnswerToTheQuestion