You are on page 1of 5

MTODOS DE INTERCALACIN

EN JAVA
En la actualidad la ordenacin de datos es un proceso
muy frecuente en programacin. Esta operacin es
tambin un proceso que las personas encuentran
comnmente en sus rutinas diarias.
Por ejemplo, cada elemento de la coleccin de datos
de una agenda telefnica tiene un campo nombre,
direccin, y un nmero de telfono.
Una coleccin de datos clasificados se puede
almacenar en un archivo, un vector o tabla, una lista
enlazada o un rbol.
Cuando los datos estn almacenados en vectores,
tablas (arrays), listas enlazadas o rboles, la
ordenacin se denomina ordenacin interna.
Cuando los datos a clasificar se encuentran
almacenados en archivos, en soportes de
almacenamiento masivo (cintas o discos) el proceso
de ordenacin se denomina ordenacin externa.

INTERCALACIN SIMPLE
El mtodo de ordenacin por intercalacin es utilizado por los
jugadores de cartas o naipes para ordenar sus barajas.
Consiste en mirar las cartas una a una y cuando se ve cada nueva carta
se inserta en el lugar adecuado.
Para desarrollar el algoritmo imaginemos que las cartas se encuentran
situadas en una fila encima del tapete; a medida que se ve una carta
nueva, sta se compara con la fila y se debe empujar alguna de ellas a
la derecha para dejar espacio e insertar la nueva.
Consideremos un vector de n posiciones. Comencemos con el
subndice i en la segunda posicin incrementando en 1, el elemento del
subndice del vector se elimina de la secuencia y se reinserta en el
vector en la posicin adecuada.
Algoritmo
n=tamao del vector
int i,k,aux;
boolean band=false;
for (k=1;k < n; k++){
aux=vect[k];
i=k-1;
band=false;
while( i>=0 && !band ){
if(aux < vect[i]){
vect[i+1]=vect[i];
i--;
}
else{
band=true;
}
}
vect[i+1]=aux;
}

k aux

band

falso

vect[k] vect[i] vect[i+1]

VECTOR
44 55 12 42 94 18

67

55

44 55 12 42 94 18

67

55

55

44 55 55 42 94 18

67

44

44

44 44 55 42 94 18

67

12

12 44 55 42 94 18

67

55

55

12 44 55 55 94 18

67

44

44

12 44 44 55 94 18

67

12

42

12 42 44 55 94 18

67

55

94

12 42 44 55 94 18

67

94

94

12 42 44 55 94 94

67

55

55

12 42 44 55 55 94

67

44

44

12 42 44 44 55 94

67

42

42

12 42 42 44 55 94

67

12
18

12 18 42 44 55 94

67

94

94

12 18 42 44 55 94 94 67

55

55

12 18 42 44 55 55 94 67

44

44

12 18 42 44 44 55 94 67

42

42

12 18 42 42 44 55 94 67

18

18

12 18 18 42 44 55 94 67

12

12

12 12 18 42 44 55 94 67

6 12 18 42 44 55 94 67

94

6 12 18 42 44 55 94 94

67

6 12 18 42 44 55 67 94

55

55

44

verdadero
1

12

falso

12

0
-1
2

42

falso

42

1
0
3

verdadero
4

94

falso

94

verdadero
4

18

falso

18

verdadero
5

falso

-1
6

67

falso

67

94

55
verdadero
8

INTERCALACIN MERGE
Cuando se dispone de dos vectores ya ordenados y se desea obtener
un tercer vector tambin ordenado, se puede realizar la ordenacin con
un mtodo denominado Mezcla (Merge en ingles).
Supongamos que A es un vector ordenado de m elementos y B es otro
vector ordenado de n elemetos. La operacin de mezcla producir un
nuevo vector de m + n elementos.
El mtodo ms sencillo, pero menos eficaz, consiste en colocar una
lista detrs de la otra y luego ordenarla.
Sin embargo este mtodo no aprovecha la propiedad de que los vectores
A y B ya estn ordenados, por ello debe recurrir normalmente al sistema
de mezcla el cual cosiste en comparar los dos primeros elementos de los
vectores (A y B) y enviar al menor al tercer vector, continuando con el
elemento comparado pero no enviado con el siguiente elemento del
vector que contiene al elemento menor comparado anteriormente y as
sucesivamente.
Una vez que se terminaron los elementos de un vector, se procede a
vaciar los elementos restantes del otro vector.
Algoritmo:
m=tamao del vector1
n=tamao del vector2
int m,n,i=0,j=0,k=0,p;
while( i < m && j < n ){
if( vec1[i] <= vec2[j] ){
mezcla[k]=vec1[i];
i++;
}
else{
mezcla[k]=vec2[j];
j++; }
k++; }
if( i>= m){
for( p=j; p < n; p++){
mezcla[k]=vec2[p];
k++; } }
if( j>=n ){
for( p=i; p < m; p++ ){
mezcla[k]=vec1[p];
k++;

}
}
inicio

1 3 5 Vector1
2 4 6 8 Vector2

m n i j k p vec1[i] vec2[j] mezcla[k] vec2[p] vec1[p]

Vector Mezcla
3 4 000

Inserta

101

Inserta

12

112

Inserta

123

213

Inserta

1234

224

Inserta

1234 5

325 2

Inserta

1234 5 6

- - 6 3

- - 7 4

<Tabla>

Ordenado 1 2 3 4 5 6 8
-

- - - - - -

You might also like