Estos métodos de ordenamiento fueron implementados en mi curso de Estructura de datos y algoritmos
La clase principal es DemoOrdenamiento.java
Los métodos de ordenamiento que incluyen son:
Burbuja Derecha – Izquierda
Burbuja Izquierda – Derecha
Inserción Directa
Selección Directa
Método Shell
Ordenamiento rápido
Todos estas clases deberìan estar incluidos en el mismo proyecto o en la misma carpeta desde donde se manda la orden al compilador, yo les he probado compilando con gcj y jdk en linux. En el curso usamos una IDE el JCreator sobre windows, espero les sirva.
//ArregloUni.java
public class ArregloUni {
protected static int MAX = 20;
protected int n;
protected int[] a = new int[MAX];
public int cantidad() {
return n;
}
public void ingreso() {
int i, cant;
do {
System.out.print("Cuantos elementos: ");
cant = Leer.datoInt();
} while (cant < 1 || cant > MAX);
for (i = 0; cant > i; i++) {
System.out.print("elemento " + i + ":");
a[i] = Leer.datoInt();
}
n = cant;
}
public void reporte() {
int i;
if (n > 0) {
for (i = 0; n > i; i++)
System.out.print(a[i] + "\t");
System.out.println("\n");
} else
System.out.println("Esta Vacio");
}
public int localizar(int x) {
int i = 0;
if (n > 0) {
while (i < n - 1 && x != a[i])
i++;
if (x == a[i])
return i; // Esta en posición i
else
return -1; // No se encuentra
} else
return -2; // Esta vacia
}
public void insertar(int x, int pos) {
int i;
if (n > 0 && n != MAX) {
for (i = n - 1; pos <= i; i--)
a[i + 1] = a[i];
a[pos] = x;
n = n + 1;
} else if (n > 0)
System.out.println("Desbordamiento");
else
System.out.println("Esta vacio");
}
public void suprimir(int pos) {
int i;
if (n > 0) {
for (i = pos; n - 1 > i; i++)
a[i] = a[i + 1];
n = n - 1;
} else
System.out.println("Esta vacio");
}
}
//DemoOrdenamiento.java
public class DemoOrdenamiento {
public static void main(String[] args) {
Ordenamiento datos = new Ordenamiento();
int sw, opcion;
datos.ingreso();
sw = 1;
do {
System.out.println("0. Salir");
System.out.println("1. Burbuja Derecha Izquierda");
System.out.println("2. Burbuja de derecha a Izquierda");
System.out.println("3. Inserción Directa");
System.out.println("4. Selección Directa");
System.out.println("5. Método Shell");
System.out.println("6. Ordenamiento rápido");
System.out.print("Opción ==> ");
opcion = Leer.datoInt();
if (opcion > 0) {
System.out.println("Arreglo antes de ordenar");
datos.reporte();
}
switch (opcion) {
case 0:
sw = 0;
break;
case 1:
datos.burbuja_der_izq();
break;
case 2:
datos.burbuja_izq_der();
break;
case 3:
datos.baraja();
break;
case 4:
datos.seleccion_directa();
break;
case 5:
datos.shell();
break;
case 6:
datos.quicksort(datos.a, 0, datos.n - 1);
break;
}
if (opcion > 0) {
System.out.println("Arreglo después de ordenar");
datos.reporte();
}
} while (sw == 1);
}
}
//Leer.java
import java.io.*;
public class Leer {
public static String dato() {
String sdato = "";
try {
// Definir un flujo de caracteres de entrada: flujoE
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);
// Leer. La entrada finaliza al pulsar la tecla Entrar
sdato = flujoE.readLine();
} catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}
return sdato; // devolver el dato tecleado
}
public static short datoShort() {
try {
return Short.parseShort(dato());
} catch (NumberFormatException e) {
// valor más pequeño
return Short.MIN_VALUE;
}
}
public static int datoInt() {
try {
return Integer.parseInt(dato());
} catch (NumberFormatException e) {
// valor más pequeño
return Integer.MIN_VALUE;
}
}
public static long datoLong() {
try {
return Long.parseLong(dato());
} catch (NumberFormatException e) {
// valor más pequeño
return Long.MIN_VALUE;
}
}
public static float datoFloat() {
try {
Float f = new Float(dato());
return f.floatValue();
} catch (NumberFormatException e) {
// No es un Número; valor float.
return Float.NaN;
}
}
public static double datoDouble() {
try {
Double d = new Double(dato());
return d.doubleValue();
} catch (NumberFormatException e) {
// No es un Número; valor double.
return Double.NaN;
}
}
public static String datoString() {
return dato();
}
public static char datoChar() {
int c = 0;
try {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);
c = flujoE.read();
char car;
car = (char) c;
return car;
} catch (IOException e) {
return '\0';
}
}
}
//Ordenamiento.java
public class Ordenamiento extends ArregloUni {
public void burbuja_der_izq() {
int i, j;
for (i = 1; i <= n - 1; i++) {
System.out.println("Recorrido" + i);
for (j = n - 1; j >= i; j--) {
if (a[j - 1] > a[j])
cambio(a, j - 1, j);
reporte();
}
}
}
public void burbuja_izq_der() {
int i, j;
for (i = n - 2; i >= 0; i--) {
System.out.println("Recorrido" + -((i - n) + 1));
for (j = 0; j <= i; j++) {
if (a[j] > a[j + 1])
cambio(a, j, j + 1);
reporte();
}
}
}
public void cambio(int[] a, int pos1, int pos2) {
int t;
t = a[pos1];
a[pos1] = a[pos2];
a[pos2] = t;
}
public void baraja() {
int i, j, aux;
for (i = 1; i <= n - 1; i++) {
aux = a[i];
j = i - 1;
while (a[j] > aux && j > 0) {
a[j + 1] = a[j];
j--;
}
if (a[j] > aux) {
a[j + 1] = a[j];
a[j] = aux;
} else
a[j + 1] = aux;
}
}
public void seleccion_directa() {
int i, j, k, aux;
for (i = 0; i <= n - 2; i++) {
k = 1;
aux = a[i];
for (j = i + 1; j <= n - 1; j++)
if (a[j] < aux) {
k = j;
k = a[j];
}
a[k] = a[i];
a[i] = aux;
}
}
public void shell() {
int d, i, sw;
d = n;
do {
d = d / 2;
do {
sw = 0;
i = -1;
do {
i++;
if (a[i] > a[i + d]) {
cambio(a, i, i + d);
sw = 1;
}
} while (i + d != n - 1);
} while (sw != 0);
} while (d != 1);
}
public void quicksort(int data[], int inf, int sup) {
int left = inf;
int right = sup;
int pivot = data[(inf + sup) / 2]; // Elemento pivote
while (left <= right) {
while (data[left] < pivot) // Encontrar elemento mayor en la izquierda
left++;
while (data[right] > pivot) // Encontrar elemento menor en la derecha
right--;
if (left <= right) {
// Intercambiar elementos
int temp = data[left];
data[left] = data[right];
data[right] = temp;
left++;
right--;
}
}
// Llamadas recursivas para ordenar las particiones
if (inf < right)
quicksort(data, inf, right);
if (left < sup)
quicksort(data, left, sup);
}
}
Pueder ir al artículo principal:
Códigos Sencillos hechos en Java
tengo una pregunta cuales son los metodos de busqueda binaria y secuencial
Tengo una pregunta cual es el metodo de busqueda binaria y secuencial
por que me dice que me hace falta main class?
ezto nou ez un vidio di maicla dyslique.. ah y te saltaste un diamante en el minuto 777.77
Buenas tardes amigo oye me podrias ayudar con el quickrot en arraylist o guiarme como poder hacerlo gracias excelente
En donde puedo implementar el Radom, para no tener que poner los numeros que quiero ordenar?
quiero los metodos de la burbuja radix shell sort quick sort enviamelo a mi correo de fabor y se los voy agradecer y quiero el menu porfavor espero una respuesta muy pronta
oooo ya vi, a tu metodo quicksort le falta el cambio, tiene las condiciones pero no realiza nada
oye me tira un overflow en el quicksort la neta no se que onda segun yo escribi todo tal y como esta, paro necesito analizar ese codigo y aprenderlo,
Quiero que me ayudes con un ejercicio de ordenamiento de un vector por el metodo lineal. en java del lenguaje NETBEANS….
Ola ke asee
Amigos buenas noches, ando en busca de este método de ordenamiento en Java(«Natural Merge Sort»), si alguien lo tuviera y me hiciera el favor de compartirme lo se lo agradecería mucho.
Etoo… oye de pura casualidad no tienes algun ejemplo para java del metodo de torneo esk n encuentro ningun ejemplo
en la primera clase, en el metodo localizar, empiezas desde n=0 y terminas en n-2, el termino n-1 no es comparado por lo que te faltaria evaluar un campo mas.
Te amo!!! tenia dos semanas buscando esto x33, y lo tengo que entregar hoy en mi clase de estructura xD
TE AMO LA NETA!!! =**** Tenia dos semanas buscando esto, lo tengo que entregar hoy para mi clase de estructura XDD
una pregunta alguien tiene una idea de como usar todos estos metodos en un solo programa??
puto
esta genieal yy me a alludado mucho grax espero que sigas suviendo codigo grax
mE GUSTARIA QUE PUBLIQUEN UNA PROGRAMA UTILIZANDO LISTAS Y NO ARREGLOS EN JAVA MEJOR DICHO ORDENAMIENTO DE LISTAS POR METODO DE INSERCION, BURBUJA Y SELECCION
Oye! amigo ya tiene tiempo que subistes estos codigos. Pero a mi me sirvio. Gracias =)
ushhh ^^ nu sabes de la k me salbaste , te gradesco un monton por tu aporte , me sirvio de muchooo grax , cdt^^-
Muy buen código.
Me gustaría que me pasaras los estilos que usas para meter el código fuente…si es posible claro, también uso wordpress y estoy buscando el estilo adecuado. El que usas me gusta.
Gracias
Muchas gracias 🙂 llevo estructura de Datos y ésto sin duda me ayudará
uy esto esta excelente, no tendras por ahi los metodos de los algoritmos de busqeda secuencial y binaria ya integrados en este proyecto??
yo tambien estoy llevando el curso Estructura de Datos y Algoritmos me va a servir estos ejemplos se agradece muchas gracias!! 😀
Salu2
no me quiere salir un ejercicio es de polimorfismo se me pone un poco complicado no se si me puedes dar algunos ejemplos sobre polimorfismo si fueras tan amable
public void seleccion_directa()
{
int i,j,k,aux;
for(i=0;i<=n-2;i++)
{
k=1;
aux=a[i];
for(j=i+1;j<=n-1;j++)
if(a[j]<aux)
{
k=j;
k=a[j];
}
a[k]=a[i];
a[i]=aux;
}
}
Oie disculpa me puedes decir q significan las variables en este metodo de ordenamiento??
Tengo un problema. cuando selecciono por ejemplo [1] en el teclado me manda nuevamente el menu de opciones y asi sucesivamente se cicla en el menu,,alguien tiene la solucion?? xfis. gracias un saludo
El problema que tienes es con este ejemplo?, o con tu propio código?
es con este ejemplo
cada que selecciono segun una opcion regresa al menu por que es???
amigos aqui dejo un ejemplo de metodos de ordenamiento en java ojala les sirva
link de descarga
http://depositfiles.com/files/4h29nqdp7
o bien
http://hotfile.com/dl/97307976/a843918/metodos_de_ordenamientos.rar.html
Todo aporte es bienvenido, gracias…
estoy buscan un programa, q me de todos los metodos de ordenamiento, un random, q imprima 100 digitos, utilizando:
burbuja
shellshort
radix
quickshort
mescla natural
hash
por favor!! gracias
tal vez te sirva el ejemplo que deje no tiene el random pero puedes implementarlo en el programa
hola, hoye me podrias ayudar esk necesito hacer el ordenamiento burbuja en java pero con hilos, pero no tengo la menor idea de como hacerlo. Me salvarias la vida. Gracias
hola:
necesito ayuda, tengo que utilizar el metodo burbuja en java para ordenar solo las filas de una matriz n x n, la dimencion debe ser introducida desde teclado y tambien los datos numericos de la matriz y no tengo ni idea de como hacer esta tarea.
AYUDA, AYUDA POR FAVOR
oye sera k me puedas ayudar con ejemplos de metodos de ordenamiento:
por emnumeracion
por insercion
por intercambio
por seleccion
por combinacion
te juro k me salvarias la vida XD
Esta muy bien pero creo que con un poco de practica se pueden mejorar, ya que tambien hay que tomar en cuenta los recursos de memoria que consumen
Una pregunta me podrian ayudar conn lo referido a radix sort su definicion como y ye ne casos se aplicas su programacion en codigo java con ejemplos si pueden envien la infromacion a etse correo Darck_tlv_27@hotmail.com
nesesito algo para leer las interfas de java con jaws 000000000000000000000000000000000000000000000000000000000000000000
viejo sera ke vos me podes ayudar con unos metodos ke nos puso el profe…es ke estoy colgado en algunos…gracias
Necesito, que de llos metodos de ordenamiento rapido y radix lo que esta a continuación
• Características fundamentales.
• Ventajas y limitaciones.
• Escenarios de uso más adecuados.
• Ejemplos de utilización.
• Análisis de complejidad del algoritmo correspondiente.
saludos
Necesito, que de llos metodos de ordenamiento rapido y radix lo que esta a continuación
• Características fundamentales.
• Ventajas y limitaciones.
• Escenarios de uso más adecuados.
• Ejemplos de utilización.
• Análisis de complejidad del algoritmo correspondiente.
Nelson aslo tu ,soi yury jajjajjaja !!!
Gracias, Bro me asignaron esta clase y no soy bueno en java.
hola necesito ayuda con este programa es
dado un array de 7 posiciones tipo int llenarlo desde teclado. Intercambiar el contenido del array.
este ejercicio es un vector y debe realizarce por el metodo de la burbuja
compa me sirvio mucho tu programa pero el quicksort me da error asi tal cual como esta sin modificarle nada.. y realmente no lo se modificar porq no lo entiendo bien a ver si me podrias ayudar o alguien que sepa gracias de igual forma
Gracias, me fue de mucha ayuda, sobre todo el quicksort
HI, fue de mucha ayuda pero tengo un problema con el caso 4 (seleccion directa), cuando meto los datos este me cambia uno de los numeros y no me los ordena….. me ayudan????
q onda ps la vdd esta chido el codigo y por cierto me ayudo en un programa parecido que me djaron
camara no hay show
necesito el metodo de ordenamiento shell en java pero para arreglos porfa si lo tienes enviame
un pequeño problema jeje no esta lo que busco, si alguin lo sabe lo puede publicar porfavor es sobre el metodo de la burbuja jeje grasias es ej java
no envien tonterias pongase a trabajar
estoy empezando en esto como hago para hacer un ordenamiento en c++ es de derecha izquierdA Y IZQUIERDA A DERECHA
bajel codigo ate que aparese enn esta misma pagina y esta listo
jhoset:
creo que está claro lo que publico en este post, son métodos de ordenamiendo en java!!!
Descarga los 4 primeros códigos, ellos funcionan juntos…
Puedes ejecutarlo desde la IDE que quieras, incluyendo netbeans. Los metodos que contiene son:
Burbuja Derecha – Izquierda
Burbuja Izquierda – Derecha
Inserción Directa
Selección Directa
Método Shell
Ordenamiento rápido
Saludos y suerte!!
hola expetos, antes que nada les doy las gracias por prestar mi antencion, quisiera saber si alguien me pueda brindar algunos metodos de ordenamiento en java netbeans, aparte de la burbuja.. ante mano se los agradesco por su colaboracion
NECESITO TODOS LOS METODOS DE ORDENAMIENTO EN JAVA
me tiro este error el principal estoy trabajando con el texpad bajo windows xp
C:\Documents and Settings\laboratorio\Escritorio\metodos de ordenamiento\DemoOrdenamiento.java:20: cannot find symbol
symbol : variable leer
location: class DemoOrdenamiento
opcion=leer.datoInt();
^
.\ArregloUni.java:15: cannot find symbol
symbol : variable Leer
location: class ArregloUni
cant=Leer.datoInt();
^
.\ArregloUni.java:19: cannot find symbol
symbol : variable Leer
location: class ArregloUni
a[i]=Leer.datoInt();
^
3 errors
Tool completed with exit code 1
mm, hola Engel, pensé enviarte algunas url’s, por falta de tiempo, pero no dejaste tu correo. En esta página encontrarás una explicación sobre radix.
oiie saforas me podias ayudar aser un programa con apuntadores con el metodo de ordenamiento radix sort
porffa
eske no logro entenderle sale grax
man sera que tienes entre tus codigos como ordenar una lista, en java?
hehe, me agrada la idea de ayudar a quienes tienen interés, cualquier duda no dudes en escribir o suscribirte a la lista de somoscodigolibre :), saludos!!
esta chio los programas deben de assr amenudo todo para aSI NOSOTROS ORIENTARNOS MAS EN PROGRAMACION
jejej esta chido los codigosde java eres bueno….jejjej