/mezcla-2-arrays

Pseudocódigo de la ordenación utilizando la mezcla

Algoritmo MezclaEntreDosVectoresOrdenados
//Definimos las estructuras de datos
Definir tam_max Como Entero
//Tamaño maximo del vector
tam_max <- 6
Definir v1,v2,v3 Como Entero
Dimension v1[tam_max], v2[tam_max], v3[tam_max+tam_max]
//Cantidad de elementos de los vectores (en el ejemplo será 6)

n1 <- 0 //numero de elementos actuales de v1
n2 <- 0 //numero de elementos actuales de v2
n3 <- 0 //numero de elementos actuales de v3

//Rellenamos los valores del vector v1
Para i <- 1 hasta tam_max Hacer
	Leer v1[i]
	n1 <- n1+1		
FinPara

//Rellenamos los valores del vector v2
Para j <- 1 hasta tam_max Hacer
	Leer v2[j]
	n2 <- n2+1		
FinPara

//Realizaremos la ordenacion de los vectores de v1	
ordenado <- falso
Mientras ordenado = falso Hacer
	ordenado <- verdadero
	Para j<-1 hasta n1-1 Hacer
		Si v1[j]>v1[j+1] Entonces
			//Haremos el intercambio
			aux <- v1[j]
			v1[j] <- v1[j+1]
			v1[j+1] <- aux
			//mientras sigo intercambiando, no esta ordenado
			ordenado <- falso
		FinSi			
	FinPara
FinMientras

//Mezclaremos (fusionaremos) los valores de v1 y v2 en v3

i <- 1 //apuntamos al primer elemento de  v1
j <- 1 //apuntamos al primer elemento de  v1
k <- 0 //apuntamos a "ningún" (inexistente) elemento de v3 porque aún no sabemos cuál es (a diferencia de v1 y v2 que sí son vectores rellenados)

Mientras  i <= n1 y j <= n2 Hacer
	Si v1[i]< v2[j] Entonces
		k <-k+1
		//Copiamos el elemento a v3
		v3[k]<-v1[i]
		i<-i+1
	SiNo
		k <-k+1
		//Copiamos el elemento a v3
		v3[k]<-v2[j]
		j<-j+1	
	FinSi
FinMientras

//Que pasa si v1 o v2 han llegado al fin

Mientras  i <= n1 Hacer
	//Lo que sobra  de v1 lo añadimos a v3
	k <-k+1
	v3[k]<-v1[i]
	i<-i+1
FinMientras

Mientras  j <= n2 Hacer
	//Lo que sobra  de v1 lo añadimos a v3
	k <-k+1
	v3[k]<-v2[j]
	j<-j+1
FinMientras
n3<-k

Escribir "elementos de V3"
Para k<-1 hasta n3 Hacer
	Escribir v3[k]
FinPara
FinAlgoritmo