Buenas!, quería consultar si esto para la parte a) seria una solución adecuada. Desde ya muchas gracias!
int inicio_1=0x100;
int fin_1 = 0x128;
int inicio_2 = 0x10A;
int fin_2 = 0x132;
int paso = 0x004; // largo de palabra:4 bytes
int dir=0x000
int dir_mayor=0x000;
int mayor=0x000;
do {
// Inicializamos la búsqueda de la palabra más grande
dir = inicio_1;
mayor = Mem[dir];
dir_mayor = dir;
// Bucle para encontrar la palabra más grande en el conjunto actual
do {
if (Mem[dir] > mayor) {
mayor = Mem[dir];
dir_mayor = dir;
}
dir = dir + paso;
} while (dir < fin_1);
// Si el mayor no está ya en la última posición del conjunto actual, lo intercambiamos para descartarlo para la proxima iteracion
if (dir_mayor != (fin_1 - paso)) {
Mem[dir_mayor] = Mem[fin_1 - paso];
}
// Colocamos la palabra más grande al final del nuevo conjunto
Mem[fin_2 - paso] = mayor;
// Reducimos el conjunto para la siguiente iteración
fin_1 = fin_1 - paso;
fin_2 = fin_2 - paso;
} while (fin_2 > inicio_2);