merge con pares
unknown
python
5 years ago
3.1 kB
8
Indexable
# importo random
import random
# función de ordenamiento
def ordenamiento(vector, tamaño):
intercambio = True
while intercambio:
intercambio = False
for i in range(0,tamaño-1):
if vector[i] > vector[i+1]:
intercambio = True
swap = vector[i]
vector[i] = vector[i+1]
vector[i+1] = swap
# defino cantidad de elementos (sobredimensiono el C)
cantidad_de_elementos_a = 8
cantidad_de_elementos_b = 5
cantidad_de_elementos_c = cantidad_de_elementos_a * cantidad_de_elementos_b
# defino vectores
vector_a = [0] * cantidad_de_elementos_a
vector_b = [0] * cantidad_de_elementos_b
vector_c = [-1] * cantidad_de_elementos_c
# relleno los vectores
for i in range(cantidad_de_elementos_a):
vector_a[i] = random.randint(1, 20)
for i in range(cantidad_de_elementos_b):
vector_b[i] = random.randint(1, 20)
# ordeno los vectores
ordenamiento(vector_a, cantidad_de_elementos_a)
ordenamiento(vector_b, cantidad_de_elementos_b)
# muestro los vectores ordenados
print("VECTOR A:")
for i in range(cantidad_de_elementos_a):
print(vector_a[i], end = " ")
print(" ")
print("VECTOR B:")
for i in range(cantidad_de_elementos_b):
print(vector_b[i], end = " ")
print(" ")
# inicializo índices
indice_a = 0
indice_b = 0
indice_c = 0
# mezclo
while (indice_a < cantidad_de_elementos_a) and (indice_b < cantidad_de_elementos_b):
if (vector_a[indice_a] < vector_b[indice_b]):
if (vector_a[indice_a] % 2 == 0):
vector_c[indice_c] = vector_a[indice_a]
indice_a = indice_a + 1
indice_c = indice_c + 1
else:
indice_a = indice_a + 1
else:
if (vector_b[indice_b] % 2 == 0):
vector_c[indice_c] = vector_b[indice_b]
indice_b = indice_b + 1
indice_c = indice_c + 1
else:
indice_b = indice_b + 1
# mezclo en caso de que hayan sobrado
# con el vector a
while (indice_a < cantidad_de_elementos_a):
if (vector_a[indice_a] % 2 == 0):
vector_c[indice_c] = vector_a[indice_a]
indice_a = indice_a + 1
indice_c = indice_c + 1
else:
indice_a = indice_a + 1
# con el vector b
while (indice_b < cantidad_de_elementos_b):
if (vector_b[indice_b] % 2 == 0):
vector_c[indice_c] = vector_b[indice_b]
indice_b = indice_b + 1
indice_c = indice_c + 1
else:
indice_b = indice_b + 1
# saco la cantidad util del vector c
contador_c = 0
for i in range(cantidad_de_elementos_c):
if vector_c[i] > -1:
contador_c = contador_c + 1
# defino un nuevo vector c
vector_c_nuevo = [-1] * contador_c
# filtro el vector c
j = 0
for i in range(cantidad_de_elementos_c):
if vector_c[i] > -1:
vector_c_nuevo[j] = vector_c[i]
j = j + 1
# muestro el vector c
print(" ")
print("VECTOR C:")
for i in range(0, contador_c):
print(vector_c_nuevo[i], end = " ")Editor is loading...