Ayuda con un pequeño algoritmo...

[email protected]
11 de Mayo del 2006
Hola [email protected]:
Les cuento: estaba programando un algoritmo de ordenamiento, el cual llamé swapsort, en la clase con el mismo nombre... pero tengo un problema; yo sé que el algoritmo está bien programado, lo que no funciona es la llamada al método swap (que es super simple). Cuando lo hago con el método swap, el programa no ordena los números.
Cuando pongo el código del swap \"a la mala\" (o sea, sin llamarlo como método, sino que escribiéndolo altiro después del trozo de código que quiero cambiar) funciona todo perfecto...
Por favor, si alguien me puede ayudar sería genial.
Muchas gracias de antemano...
El código es el siguiente:


public class swapsort
{

public static void imprimir(int a[])
{
for(int k=0 ; k<a.length ; k++)
System.out.print(\" \"+a[k]);
} //fin imprimir


public static void main(String args[])
{
int array[] = {1,9,5,7,3,6,4,8,2};
imprimir(array);
int aux1, aux2;
int menor, mayor;
int i,j;

for(j=0 ; j<array.length-j-1 ; j++)
{
menor=j;
mayor=array.length-j-1;
for(i=j ; i<array.length-j-1 ; i++)
{
if(array[i]<array[menor]) menor = i;
if(array[i]>array[mayor]) mayor = i;
}
swap(menor,j);
swap(mayor,array.length-j-1);

System.out.println(\" \");
imprimir(array);
}
System.out.println(\" \");


} //fin main

public static void swap(int a, int b)
{
int c;
c = a;
a = b;
b = c;
}

} //fin swapsort

green626
11 de Mayo del 2006
Segun lo q veo en el algoritmo cuando llamas al metodo swap éste no esta devolviendo nada, tampoco guarda en variables globales por lo tanto está trabajando aisladamente del resto del programa;
las variables a,b y c son locales para el metodo swap por eso nada hace.

[email protected]
11 de Mayo del 2006
ok, toda la razón...
cómo puedo hacer para que tome las variables que ocupo en main? o sea, cómo las declaro como globales, o hago que swap devuelva los valores nuevos?
muchas gracias por tu respuesta.
saludos.

Diego
11 de Mayo del 2006
Método para intercambiar el contenido de dos posiciones de un array de cualquier tipo.

import java.lang.reflect.Array;
public static void swap(Object array,int pos1,int pos2){
Object aux=Array.get(array,pos1);
Array.set(array,pos1,Array.get(array,pos2));
Array.set(array,pos2,aux);
}

Espero que te sirva