C/Visual C - Díficil: Quicksort con fork (2º parte)

 
Vista:

Díficil: Quicksort con fork (2º parte)

Publicado por Alonso Guillén (2 intervenciones) el 19/03/2001 23:21:40
Bueno,el caso es que yo entiendo la creación de procesos hijos mediante fork, pero no se por donde empezar a programar el problema que les postee en el msg anterior. Si alguno de ustedes pudiera proporcionarme el pseudocódigo, le estaría eternamente agradecido. Es un poco urgente que aprenda a resolverlo. Gracias.

P.D. Disculpen la longitud de mis posteos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Programa de ordenamiento Quicksort con comunicación entre procesos mediante fork y message passing

Publicado por Alejandro (1153 intervenciones) el 10/09/2024 23:14:59
¡Hola de nuevo, Alonso! A continuación te proporcionaré un pseudocódigo que puedes seguir para resolver el problema que mencionaste:

1. Definir una función `quicksort()` que tome como parámetros el arreglo a ordenar, el índice de inicio y el índice de fin del subarreglo a ordenar.
2. En la función `quicksort()`, verificar si el índice de inicio es menor que el índice de fin. Si no lo es, retornar.
3. Calcular el índice del pivote utilizando la función `partition()`. El pivote puede ser el último elemento del subarreglo.
4. Crear un nuevo proceso hijo utilizando la llamada al sistema `fork()`.
5. En el proceso hijo, llamar a la función `quicksort()` con los parámetros correspondientes para ordenar el subarreglo izquierdo (desde el índice de inicio hasta el índice del pivote - 1).
6. En el proceso padre, llamar a la función `quicksort()` con los parámetros correspondientes para ordenar el subarreglo derecho (desde el índice del pivote + 1 hasta el índice de fin).
7. Esperar a que el proceso hijo termine utilizando la llamada al sistema `wait()`.
8. Combinar los subarreglos ordenados y pasarlos al proceso padre utilizando la comunicación entre procesos mediante las llamadas al sistema `msgctl()`, `msgget()` y `msgop()`.
9. En el proceso padre, recibir los subarreglos ordenados de los procesos hijos utilizando las llamadas al sistema `msgctl()`, `msgget()` y `msgop()`.
10. Combinar los subarreglos ordenados y mostrar el resultado ordenado en la salida estándar.

Recuerda que este pseudocódigo es solo una guía para ayudarte a comenzar a programar el problema. Deberás implementar cada paso utilizando las llamadas al sistema y las funciones adecuadas en C.

Espero que esto te ayude a empezar. ¡Buena suerte con tu programación!

Saludos cordiales,
Ale
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar