merge con pares

mail@pastecode.io avatar
unknown
python
3 years ago
3.1 kB
3
Indexable
Never
# 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 = " ")