You are on page 1of 11

METODOS DE ORDENAMIENTO

La ordenacin es la operacin que permite establecer un orden (creciente o


decreciente) entre un conjunto de valores. Dependiendo donde estn
almacenados los datos, la ordenacin recibe diferentes nombres. Si se
realiza sobre datos guardados en un arreglo se le llama ordenacin interna.
Por otra parte, si se aplica a un conjunto de valores almacenados en un
archivo, se le denomina ordenacin externa.
Ordenar la informacin almacenada en la estructura permite recuperarla en
menos tiempo. Es decir, la bsqueda resulta ms eficiente cuando los datos
estn ms ordenados.
ORDENACIN INTERNA
La ordenacin interna se refiere a ordenar un conjunto de datos que se
encuentran almacenados en una estructura, en memoria principal. El
resultado de aplicar esta operacin a un arreglo es que todos sus elementos
quedan ordenados de manera creciente o decreciente.
. Creciente: dato1 < dato2 < dato3 < < dato n (el primer dato es
menor o igual que el segundo, este es menor o igual que el tercero y as
sucesivamente hasta el ltimo dato).
. Decreciente: dato1> dato2>.. >dato n (el primer dato es mayor o
igual que el segundo, este es mayor o igual que el tercero y as
sucesivamente hasta el ltimo dato).
Existen numerosos mtodos que ordenan a los elementos de un arreglo. Los
mtodos pueden agruparse segn la caracterstica principal (intercambio,
insercin o seleccin) de la operacin que realizan para ordenar los valores.
Los ms conocidos y utilizados son:

Mtodos de ordenacin
Por intercambio

Directo con desplazamiento


hacia la izquierda.
Directo con desplazamiento
hacia la derecha.
Shaker (sacudida)
Con seal
QuickSort

Directa

Por seleccin

Por insercin

Directa
Binaria
Shell

Todos los mtodos utilizan dos operaciones bsicas para llevar a cabo la
ordenacin de los elementos: la comparacin y el movimiento de los
mismos. Por lo tanto, si lo que se quiere ordenar son objetos hay que tener
en cuenta que se deben sobrecargar los operadores de comparacin en las
clases correspondientes.
METODOS DE ORDENACION POR INTERCAMBIO
Estos mtodos son de los ms sencillos y por lo tanto ms usados para
ordenar un conjunto pequeo de datos. Se caracterizan por que se
intercambian los valores como resultado de la comparacin de los mismos.
Existen varios mtodos que se basan en esta idea. Los ms conocidos son:
. Intercambio directo:
-

Con desplazamiento hacia la izquierda: El mtodo de intercambio


directo consiste en recorrer el arreglo comparando pares de datos e
intercambindolos de tal manera que los valores pequeos se vayan
desplazando hacia la izquierda o bien, los valores ms grandes se
vayan desplazando hacia la derecha. Esta caracterstica genera dos
versiones de este algoritmo, dando origen a sendas clases.

Con desplazamiento hacia la derecha: El mtodo de intercambio


directo consiste en recorrer el arreglo comparando pares de datos e
intercambindolos de tal manera que los valores pequeos se vayan
desplazando hacia la derecha o bien, los valores ms grandes se
vayan desplazando hacia la izquierda.

. Sheker:
El algoritmo conocido con el nombre de Sheker o de sacudida es una
combinacin de los dos anteriores. Cada recorrido del arreglo se
divide en dos etapas, en la primera se mueven los elementos ms
pequeos hacia la izquierda y en la segunda, los elementos ms
grandes hacia la derecha. En cada etapa se guarda la posicin donde
se realiz el intercambio, y de esta manera en el siguiente recorrido
del arreglo el intercambio, y de esta manera en el siguiente recorrido
del arreglo el intervalo se reduce entre estas dos posiciones. El
proceso termina cuando no se producen intercambios o bien, cuando

la posicin del extremo izquierdo es mayor que la del extremo


derecho.
. Intercambio con seal:
Este algoritmo es otra variante de la ordenacin por intercambio
directo y busca ganar eficiencia en cuanto al nmero de
comparaciones realizadas. Para ello se apoya en una variable auxiliar
(la seal) que permite determinar en cada recorrido si se produjo
algn intercambio. Si lo hubo, entonces se sigue recorriendo el
arreglo; mientras que, en caso contrario, la ordenacin termina,
habiendo quedado ordenado todo el arreglo. Es decir, cuando en un
recorrido no se hacen intercambios esta situacin se detecta por
medio de la variable auxiliar o bandera y se evitan todas las
comparaciones pendientes de acuerdo a los lmites de los ciclos.

Ejemplo del Mtodo de ordenacin por intercambio


package ordenamiento_burbuja;
//Clase invocada para utilizar el objeto Scanner y leer datos del
teclado.
import java.util.Scanner;
public class Ordenamiento_burbuja {
public static void main(String[] args) {
//Define el arreglo para los nmeros, el cual se encuentra sin
elementos, se define adems la variable act y arr para almacenar el
nmero actual y el anterior//
int[] numeros;
int act,arr;
//Se define un objeto tipo escaner para leer los datos desde la
consola, adems se solicita el dato para determinar el tamao de
arreglo y se le asigna a dicho arreglo//
Scanner lector=new Scanner(System.in);
System.out.println("Numeros a introducir");
int tam=lector.nextInt();

numeros=new int[tam];
//cdigo para realizar la introduccin de los valores
for(int elem=0;elem<=tam-1;elem++)
{
System.out.println("Teclea un nmero");
numeros[elem]=lector.nextInt();
}
//Cdigo para que se realice el ordenamiento, se hacen 2 ciclos para
realizar el procedimiento para ordenar cada uno de los nmeros. Se
compara el nmero actual con el de arriba, si lo es, esos valores
intercambian de posicin en el arreglo//
for(int c=0;c<=tam;c++)
{
for(int d=0;d<=tam-2;d++)
{
act=numeros[d];
arr=numeros[d+1];
if(act>arr)
{
numeros[d]=arr;
numeros[d+1]=act;
}}
}
//Se hace este ciclo para mostrar lo datos ordenados.
for(int elem=0;elem<=tam-1;elem++)
{
System.out.println(numeros[elem]);

} }}

METODO DE ORDENACION POR SELECCIN


Otra manera de ordenar un conjunto de datos es seleccionar el ms
pequeo y guardarlo en la primera casilla, luego el siguiente ms pequeo
y guardarlo en la segunda casilla y as sucesivamente hasta el penltimo
elemento (el ultimo ya no requiere ordenarse).

Ejemplo del Mtodo de ordenacin por Seleccin


public class seleccion {
private int[] vector;
private int elementos;

public seleccion (){}

public int[] ordenar(int[] v){


this.vector=v;
elementos = vector.length;
//se toma como valor mayor el ultimo elemento del vector "n-1"
int mayor = vector[elementos-1];//ojo: en java el array empieza en "0"
int pos = elementos-1;
int aux;
//se repite el ciclo hasta que quede un solo elemento
while(elementos > 1) {
//se recorre todos los elementos del vector
for(int i=0; i<elementos;i++){
//se busca el elemento mayor

if(vector[i]>mayor){
mayor = vector[i];
pos = i;
}
}
// se intercambian valores, el valor mayor encontrado se hubica en
// la ultima posicion del vector
aux = vector[elementos-1];
vector[elementos-1] = mayor;
vector[pos] = aux;
System.out.println("orden de ciclo : "+ Mostrar(vector));
//se resta en uno la cantidad de elementos
elementos--;
//se toma como valor mayor el ltimo elemento del vector
mayor = vector[elementos-1];
pos = elementos-1;
}
return vector;
}
//para imprimir el array de la forma | 0 | 1 | 2 | 3 | 4 |
public String Mostrar(int[] v){
String s=" | ";
for (int i=0; i < v.length; i++){
s += v[i] + " | ";
}
return s;

}
}

METODO DE ORDENACION POR INSERCION


La ordenacin por insercin consiste en tomar un elemento e insertarlo en
el lado izquierdo del arreglo que ya se encuentra ordenado. El proceso
empieza a partir de la segunda casilla y se aplica hasta el ltimo elemento.
Existen algunos elementos que se basan en esta idea:
-

Insercin directa: Este mtodo ordena el arreglo a partir del


segundo elemento, insertndolo en el lado izquierdo que ya est
ordenado (la primera vez solo se ordena con respecto al primer
elemento). Luego de la primera interaccin se tienen dos elementos
ordenados y por lo tanto el tercer valor se inserta en la posicin que
le corresponda, de tal manera que el orden de los dos primeros
elementos no se altere.

Insercin binaria: El mtodo de insercin binaria es una mejora del


anterior. En este caso se realiza bsqueda binaria para encontrar la
posicin que le corresponde al elemento a ordenar en la parte
izquierda del arreglo. Es decir, cuando se toma el elemento i y se
busca la posicin correcta en la que debe insertarse, se usa la
bsqueda binaria en lugar de la secuencial. De esta manera se
aprovecha que los elementos que se encuentran a la izquierda del
analizado ya estn ordenados.

Ejemplo del Mtodo de ordenacin por Insercin

public static void main(String[] args) {


Scanner lectura = new Scanner(System.in);
int[] Arreglo;
int longitud, key, i;

System.out.println("\t\t INSERCION : ");


// Longitud del arreglo
System.out.print("Ingrese la Cantidad Numeros a Ordenar: ");
longitud = lectura.nextInt();
// Creando un arreglo
Arreglo = new int[longitud];

// Leer todos los numero a ordenar


System.out.println("Ingresar " + longitud + " - Numeros : ");
for(int n=0; n<longitud ; n++){
Arreglo[n] = lectura.nextInt();
}
// Ordenar los Numeros utilizando el metodo Burbuja
for(int j=1 ; j<longitud ; j++){
key = Arreglo[j];
i = j-1;
//Inserta A[j] en la ya ordenada
while(i >= 0 && Arreglo[i]>key){
Arreglo[i+1]= Arreglo[i];
i--;
}
Arreglo[i+1] = key;
}
// Muestra el arreglo ordenado
for(int n=0; n<longitud ; n++)
System.out.print(Arreglo[n]+" ");

Referencias bibliogrficas:

You might also like