Czy istnieje wyspecjalizowany algorytm, szybszy niż szybkie sortowanie, do zmiany kolejności danych ACEGBDFH?

Mam dane pochodzące ze sprzętu. Dane są dostarczane w blokach po 32 bajty i potencjalnie są miliony bloków. Bloki danych są rozproszone na dwie połowy w następujący sposób (litera to jeden blok):

<code>A C E G I K M O B D F H J L N P
</code>

lub jeśli są ponumerowane

<code>0 2 4 6 8 10 12 14 1 3 5 7 9 11 13 15
</code>

Najpierw wszystkie bloki z parzystymi indeksami, potem dziwne bloki. Czy istnieje wyspecjalizowany algorytm do poprawnej zmiany kolejności danych (kolejność alfabetyczna)?

Ograniczenia dotyczą głównie przestrzeni. Nie chcę przydzielać innego bufora do ponownego uporządkowania: tylko jeszcze jeden blok. Ale chciałbym też zachować niską liczbę ruchów: prosty quicksort to O (NlogN). Czy istnieje szybsze rozwiązanie w O (N) dla tego specjalnego przypadku zmiany kolejności?

questionAnswers(6)

yourAnswerToTheQuestion