Ordenar por prioridad

De Ejercicios

Enunciado

En una aplicación de gestión de tareas se tienen dos vectores de información. En uno de ellos se almacena el código de la tarea (un entero) y en el otro paralelo se almacena la prioridad de dicha tarea (el número más bajo de prioridad se corresponde con la tarea más prioritaria). Implementa una función que reciba como parámetros de entrada ambos vectores y devuelva un vector con los códigos de las tareas ordenados por prioridad decreciente. Se supone que ningún trabajo puede tener la misma prioridad que otro.

Ejemplo:

Vector con los códigos de las tareas:	123	543	276	27	76	34	145
Vector con las prioridades..........:	8	3	1	2	4	7	5
Vector de salida....................:	276	27	543	76	145	34	123

Soluciones

Programa en Matlab

function sol = prioriza(t, p)
% Función sol = prioriza(t, p)
% Descripción: Calcula una lista de tareas priorizadas
% Parámetros de entrada:
%   t: ARRAY DE ENTEROS; vector de tareas
%   p: ARRAY DE ENTEROS; vector de prioridades. 
%        p(i) indica la prioridad de la tarea t(i)
% Parámetros de salida:
%   sol: ARRAY DE ENTEROS; vector con las tareas en orden de prioridad
 
sol = [];
while length(t) > 0
  [valor,pos] = min (p);
  sol = [sol t(pos)];
  t(pos) = [];
  p(pos) = [];
end
Tipos de soluciones