Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

Necesito ayuda con un metodo de ordenamiento

toñonv

Bovino adicto
Desde
26 Sep 2009
Mensajes
704
Este metodo como otros varios nos dejaron de tarea investigarlos, ya tengo un buen de codigo, solo que me fastidia un error, si alguien pudiera ayudarme seria de gran ayuda para mi.

El metodo es el de Burbuja Mejorada y el error lo resalto en rojo, y me dice asi: Indice fuera de limites de la matriz.

de antemano GRACIAS por su tiempo.

CODIGO.

static UInt16 n;
static int[] numeros;

static void captura()
{
bool result = false;
while (result == false)
{
Console.Write("Cuantos números desea capturar: ");
result=UInt16.TryParse(Console.ReadLine(),out n);
}
numeros = new int[n];
Console.WriteLine("\nIntroduzca los números a ordenar: ");
int cont = 0;
while (cont < n)
{
Console.Write("{0}: ", cont + 1);
result = int.TryParse(Console.ReadLine(), out numeros[cont]);
if (result == true)
cont++;
else
Console.WriteLine("NO es un número entero.");
}
Console.WriteLine("Ha terminado de capturar los números.");
Console.ReadKey(true);
}

static void burbuja_mejorada()
{
int aux, i, j, cambio;
for (i = 0; i < (n - 1); i++)
{
cambio = 0;
for (j = 0; j <(n-i); j++)
{
if (numeros[j] > numeros[j + 1])
{
aux = numeros[j];
numeros[j] = numeros[j + 1];
numeros[j + 1] = aux;
cambio = 1;
}
}
if (cambio == 0)
break;
}
}

static void desplegar()
{
for (int cont = 0; cont < n; cont++)
Console.WriteLine("{0}: {1}", cont + 1, numeros[cont]);
Console.ReadKey(true);
}
 
Según tu, que significa eso: for (j = 0; j - n - i; j++)

Por eso estoy aqui por que no se para que se usa ese FOR y mucho menos como corregirlo. Si puedes y quieres ayudarme muchisimas Gracias si no de igual manera Gracias por tu tiempo Amigo.
 
lo que pasa es que no puedes poner una operacion aritmetica como es j-n-i en un espacio del for que esta asignado para condiciones o condicionales como le quieras decir.

Para mi que la sintaxis es como la del for anterior

for (i = 0; i < (n - 1); i++)

solo que en vez de ser "i" y restarle 1 a n ahora es "j" y se le resta "i" que quedaria asi

for (j = 0; j < (n - i); j++)
 
lo que pasa es que no puedes poner una operacion aritmetica como es j-n-i en un espacio del for que esta asignado para condiciones o condicionales como le quieras decir.

Para mi que la sintaxis es como la del for anterior

for (i = 0; i < (n - 1); i++)

solo que en vez de ser "i" y restarle 1 a n ahora es "j" y se le resta "i" que quedaria asi

for (j = 0; j < (n - i); j++)

Si tienes razon ya lo probe, solo que ahora me saca otro problema. Muchas Gracias Amigo. Edito el tema.
 
bro checa que estos unos
if (numeros[j] > numeros[j + 1])
{
aux = numeros[j];
numeros[j] = numeros[j + 1];
numeros[j + 1] = aux;
cambio = 1;
}

en realidad sean 1 y no "i"
 
bro checa que estos unos
if (numeros[j] > numeros[j + 1])
{
aux = numeros[j];
numeros[j] = numeros[j + 1];
numeros[j + 1] = aux;
cambio = 1;
}

en realidad sean 1 y no "i"

muchas gracias hermano !!!

de seguro eso es... ya estoy algo cansado y no veo algunas cosas
lo checo y regreso
 
Asi es hermano bakuno eso era.
Muchas gracias de nuevo.
 
Volver
Arriba