Professional Documents
Culture Documents
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
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
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
-
- - - - - -