He estado trabajando en lo que parece ser una tarea simple que me está volviendo loco. Entonces, si te apetece un desafío de programación ... sigue leyendo.Proceso de selección binaria
Quiero ser capaz de tomar un rango de números, p. [1:20] e imprima los valores usando un mecanismo similar a un algoritmo de búsqueda binario. Entonces, imprima primero el valor más bajo (en este caso 1) y luego el valor medio (por ejemplo, en este caso 10) y luego divida el rango en trimestres e imprima los valores en 1/4 y 3/4 (en este caso, 5 y 15) y luego divida en ochos y así sucesivamente hasta que todos los valores en el rango hayan sido impresos.
La aplicación de esto (que no es realmente necesario entender aquí) es para un mecanismo de acceso a la página de memoria que se comporta de manera más eficiente cuando se accede a las páginas en los rangos medios primero.
Para este problema, sería suficiente tomar cualquier rango de números e imprimir los valores de la manera descrita anteriormente.
¿Alguna idea de esto? Una solución de código psuedo estaría bien. Mostraría un intento de esto, pero todo lo que he intentado hasta ahora no lo corta. Gracias.
Actualización: Según lo solicitado, la salida deseada para el ejemplo [1:20] sería algo como esto: 1, 10, 5, 15, 3, 7, 12, 17, 2, 4, 6, 8, 11, 13, 16, 18, 9, 19, 20
Esta salida se podría presentar de muchas maneras similares según el algoritmo utilizado. Pero la idea es mostrar primero los valores medios, luego los trimestres, luego los ochos, luego los decimosexto, etc., omitiendo los valores presentados anteriormente.
¿Podría proporcionar la salida completa deseada para un caso de muestra? –
pero solo puede usar páginas que asigne ¿estoy en lo correcto? –
Esta respuesta a una pregunta similar puede ser útil: http://stackoverflow.com/a/11761192/1009831 –