De http://www.eli.sdsu.edu/courses/spring96/cs662/notes/batcher/batcher.html
Input: N and array A[1:N] of items to sort
set T = Ceiling(lg(N))
for P = 2T-1, 2T-2, 2T-3, ..., 1 do
R = 0, D = P
for Q = 2T-1, 2T-2, 2T-3, ..., P do
for (K = 1 to N - D) and ((K-1) P) = R do in parallel
if A[K] > A[K + D] then
swap(A[K], A[K + D ])
end if
end for
D = Q - P
R = P
end for
end for
(K + 1) P means logical and of K and P
If number of processors is less than N than the swap becomes a merge
This site tiene una visualización de este algoritmo
Por lo que recuerdo, esa sección dio el algoritmo y una prueba de la corrección, pero sin intuición de cómo funciona o cómo surgió, a alguien se le ocurrió. – user108088
Knuth da una interpretación geométrica en términos de plegado repetido de una grilla (ver página 113). Esto podría ayudar a tu intuición. Además, agregué el documento original de Batcher a mi respuesta; y si eso no puede ayudarlo, ¿por qué no [pregunte al hombre mismo] (http://www.cs.kent.edu/~batcher/)? –