ordenamiento por mezcla ayudaa urgente porfavor!!!
hola este es mi primer post en este foro y me a servido bastante e sacado mucha información saben que necesito ayuda tengo que hacer una tarea de ordenamiento por mezcla en java en la cual el usuario indique la cantidad del vector y ingrese los números por favor es mi ultima nota y me tengo que salvar desde ya muchas gracias a todos por su tiempo
miren tengo este codigo pero me falta solamente agregar el vector y los numeros aver si me pueden ayudar.
public class Mergesort
{
public static void main(String[ ] args)
{
final String BLANKS = " "; // A String of two blanks
int i; // Array index
int[ ] data = { 1000, 80, 10, 50, 70, 60, 90, 20, 30, 40, 0, -1000 };
// Print the array before sorting:
System.out.println("Aquí está la matriz original completo:");
for (i = 1; i < data.length-1; i++)
System.out.print(data[i] + BLANKS);
System.out.println( );
// Sort the numbers, and print the result with two blanks after each number.
mergesort(data, 1, data.length-2);
System.out.println("Aqui los muestro ordenados.");
System.out.println("Los números son:");
for (i = 1; i < data.length-1; i++)
System.out.print(data[i] + BLANKS);
System.out.println( );
}
public static void mergesort(int[ ] data, int first, int n)
{
int n1; // Size of the first half of the array
int n2; // Size of the second half of the array
if (n > 1)
{
// Compute sizes of the two halves
n1 = n / 2;
n2 = n - n1;
mergesort(data, first, n1); // Sort data[first] through data[first+n1-1]
mergesort(data, first + n1, n2); // Sort data[first+n1] to the end
// Merge the two sorted halves.
merge(data, first, n1, n2);
}
}
private static void merge(int[ ] data, int first, int n1, int n2)
{
int[ ] temp = new int[n1+n2]; // Allocate the temporary array
int copied = 0; // Number of elements copied from data to temp
int copied1 = 0; // Number copied from the first half of data
int copied2 = 0; // Number copied from the second half of data
int i; // Array index to copy from temp back into data
// Merge elements, copying from two halves of data to the temporary array.
while ((copied1 < n1) && (copied2 < n2))
{
if (data[first + copied1] < data[first + n1 + copied2])
temp[copied++] = data[first + (copied1++)];
else
temp[copied++] = data[first + n1 + (copied2++)];
}
// Copy any remaining entries in the left and right subarrays.
while (copied1 < n1)
temp[copied++] = data[first + (copied1++)];
while (copied2 < n2)
temp[copied++] = data[first + n1 + (copied2++)];
// Copy from temp back to the data array.
for (i = 0; i < n1+n2; i++)
data[first + i] = temp[i];
}
}
- Inicie sesión o regístrese para enviar comentarios
Uyy.. .espero que lo logres.
Uyy.. .espero que lo logres.
Por lo pronto, algo que te servirá toda la vida es hacer busquedas en google ( bueno si es que google dura toda la vida , ehm.. en fin )
Ordenamiento por mezcla:
http://www.google.com.mx/search?q=merge+sort+java
Leer la entrada del usuario:
http://www.google.com.mx/search?q=read+user+input+java
etc. etc, ya tienes la idea.
Si te surge algun problema intentando implementar algo de lo que encuentras puedes regresar y decirnos algo como: "Estoy escribiendo este código xyz, pero me sale el error ArrayIndexOutOfBoundsException"
Y así será más fácil ayudarte. Por lo pronto en google puedes encontrar muchisimo código con el cual iniciar.
Saludos.
mira arriva publique el codigo k tengo
arriva publique el codigo que tengo aver si me puedes echar una mano para ver que se puede hacer
gracias
Ejemplo de copy & paste
¿Copiaste el código o lo hiciste tú?.
Antes intenta hacer pequeños ejemplos de manejo de vectores y matrices. Tal vez asi encuentres la solución.
Pues ya casi lo tienes!!!
Pues ya casi lo tienes!!! Solo te hace falta con saber como leer los datos y listo.
En el segundo link ( http://www.google.com.mx/search?q=read+user+input+java ) hay un montón de ejemplos, toma alguno que use la clase java.util.Scanner. Crea un programa separado y cuando logres leer correctamente lo puedes mezclar ( que ironía ) en el programa principal.
Debe de ser algo como esto:
int tamaño = scanner.nextInt();
int [] data = new int[ tamaño ];
for( int i = 0 ; i < tamaño ; i++ ) {
data[i] = scanner.nextInt();
}
...
// aqui data ya esta listo para ser usado....
O sea que estas a casi nada de lograrlo, ánimo!
no entiendoo
esk no entiendo como introducirlo en le codigoo
me podrias ayudar por faavorr he estado cabesiandome desde antes de ayer y no puedo armarloo
Como que como? Pueeees...
Como que como? Pueeees... primero entiendes lo que hace y luego lo escribes, no?
Por ejemplo el siguiente programa, lee n numeros:
Y es básicamente lo mismo que escribí antes.
Copialo, escribelo en tu editor/ide, pruebalo, entiende lo que hace y lograras ponerlo todo junto.
Te mande...
un comentario pero al parecer ya soy SPAM... :'(..
Como lo mandaste o a quién se
Como lo mandaste o a quién se lo mandste?
@Oscar
Pues puse un comentario desde mi casa, y me salio un mensaje que dice algo así: tu IP se tacho como posible spamer y si no es spam, cuando alguien del javamexico core lo revise se publicara. Luego lo mismo me salio al querer poner esta incidencia en la parte de Bugs. :(