Ordenación por selección (con subalgoritmos)

De Ejercicios

Contenido

Enunciado

Diseña un algoritmo que nos ordene un vector de menor a mayor, utilizando para ello un subalgoritmo de búsqueda y otro de intercambio de dos elementos. El proceso es el siguiente: buscamos el número mayor dentro del rango de todo el vector y a continuación lo intercambiamos con la posición final del vector, a continuación buscamos el segundo número mayor dentro del rango de todo el vector menos la última posición, y lo intercambiamos con la penúltima posición, y así hasta que el rango de búsqueda del mayor sea de un solo elemento.

Debes también diseñar el código de los dos subalgoritmos cuyas cabeceras se muestran a continuación:

Subalgoritmo BuscaMayor

FUNCION BuscaMayor (vector, posicion1, posicion2): ENTERO
ENTRADAS:
  vector: ARRAY(1..M) DE ENTEROS  (vector de números)
  posicion1, posicion2: ENTERO    (posiciones que  delimitan un rango)
SALIDAS:
  (Posición del elemento mayor en el rango delimitado por posicion1 y posicion2)

Por ejemplo, si llamamos al subalgoritmo de búsqueda con los valores que se muestran abajo, el resultado obtenido sería: 5 (Ya que el valor mayor dentro del rango es 8).

              Rango de búsqueda
            /-------------------\
            1   2   3   4   5   6   7   8   9
-----------------------------------------------
Vector:     4   5   2   7   8   6   9   10  14
-----------------------------------------------
Posicion1:  1					
Posicion2:  6									

Subalgoritmo Intercambio

PROCEDIMIENTO Intercambio(VAR vector, posicion1, posicion2)
ENTRADAS:
  vector: ARRAY(1..M) DE ENTEROS  (vector de números)
  posicion1, posicion2:ENTERO     (las posiciones del vector de los dos elementos que  queremos intercambiar.)
SALIDAS:
  (vector en el que se han intercambiado los elementos que ocupan las posiciones posicion1 y posicion2.)


Soluciones

Tipos de soluciones