Un vector V es un vector que está compuesto de dos partes:
v = x1 x2 x3 x4 … xn y1 y2 y3 … ym |
tales que x1 … xn está ordenado de forma escrita decreciente y y1 … ym está ordenado de forma escrita creciente. Además, xn > y1. Por último tenemos que n,m > 0. Es decir, ninguna de las dos partes está vacía.
Es necesario implementar la función
void ordena(const vector<int>& v, int pos, vector<int>& r)
con la siguiente especificación:
PRE:
v es un vector V como ∣ v ∣ ≥ 3,
pos es la posición en la que se encuentra y1 en v y
∣ v ∣ = ∣ r ∣.
POST:
El vector r contiene todos los elementos del
vector v y está ordenado.
Observación
Sólo tiene que enviar la función que le pedimos y las acciones y funciones que vosotros mismos defina.
No se puede utilizar la operación sort
de la biblioteca stl
.
Pista: saber la posición en la que se encuentra y1 le puede ayudar a ordenar el vector en tiempo lineal.
IMPORTANTE: Sólo hay que enviar la función que se pide, y quizás otras acciones y funciones necesarias. Hay que mantener, sin embargo, las definiciones de tipos y los #include
s.
Entrada
Un número indeterminado de vectores V con el siguiente formato: un entero que indica su tamaño, después el vector V, despues la posición en la que se encuentra y1 en v y un vector r del mismo tamaño que v. Todo vector V tiene un tamaño mayor o igual a 3.
Salida
El vector r está ordenado y contiene todos los elementos de v.
ENTRADA 1: 10 20 18 16 2 4 6 8 10 12 14 3 SORTIDA 1: 2 4 6 8 10 12 14 16 18 20 ENTRADA 2: 10 20 2 4 6 8 10 12 14 16 18 1 SORTIDA 2: 2 4 6 8 10 12 14 16 18 20 ENTRADA 3: 10 20 18 16 2 4 6 8 10 12 14 3 SORTIDA 3: 2 4 6 8 10 12 14 16 18 20 ENTRADA 4: 5 14 11 8 2 14 3 SORTIDA 4: 2 8 11 14 14 ENTRADA 5: 10 20 2 4 6 8 10 12 14 16 18 1 SORTIDA 5: 2 4 6 8 10 12 14 16 18 20