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.)