Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Mensaje iniciado por: kernel19 en 14 Noviembre 2010, 18:48 PM

Título: Duda Algoritmo de Ordenamiento
Publicado por: kernel19 en 14 Noviembre 2010, 18:48 PM
Hola como les va

tengo una pequeña duda en un algoritmo de Ordenamiento les presento el metodo
public static int[] InsertionSort(int[] arre)
    {
        for(int j = 1; j != arre.length; j++)
        {
            int key = arre[j];
            int i = j - 1;
            while((i > 0) && (arre[i] > key))
            {
                arre[i + 1] = arre[i];
                    i = i - 1;
            }
            arre[i + 1] = key;
        }

        return arre;
    }


y sigo el siguiente pseudocodigo
INSERTION-SORT(A)
1 for j ← 2 to length[A]
2 do key ← A[ j ]
3 ✄ Insert A[ j ] into the sorted sequence A[1 . . j − 1].
4 i ← j − 1
5 while i > 0 and A[i ] > key
6 do A[i + 1] ← A[i ]
7 i ←i − 1
8 A[i + 1] ← key


El arreglo

int[] arreglo = {2,4,3,7,1,6,10};

la salida:

2
1
3
4
6
7
10

el problema es que me ordena todos menos el primero ya le movi de todo y lo veo igual al pseudocodigo si me pueden ayudar Muchas Gracias

Título: Re: Duda Algoritmo de Ordenamiento
Publicado por: Akai en 14 Noviembre 2010, 18:54 PM
El vector empieza en la posición 0 hasta n-1, no de 1 hasta n.
Título: Re: Duda Algoritmo de Ordenamiento
Publicado por: kernel19 en 14 Noviembre 2010, 19:26 PM
veo que no viste el pseudocodigo, el vector tiene que empezar en 1, en el pseudocodigo inicia en 2  que seria el equivalente en codigo a 1 y respecto a n-1 lo probe y da igual, espero me puedan ayudar gracias.
Título: Re: Duda Algoritmo de Ordenamiento
Publicado por: ignorantev1.1 en 20 Noviembre 2010, 05:10 AM
Si buscas un algoritmo de ordenamiento funcional hazle caso a Akai, si buscas programar lo que esta en el pseudocodigo lo haces bien, no veo el caso del post...
Título: Re: Duda Algoritmo de Ordenamiento
Publicado por: BgCRaCK en 27 Diciembre 2010, 16:54 PM
  for(int  j = 1; j != arre.length; j++)
       {
           int key = arre[j];
           int i = j - 1;
           while((i > 0) && (arre > key))
           {
               arre[i + 1] = arre;
                   i = i - 1;
           }
           arre[i + 1] = key;
       }

       return arre;
   }

Creo que tienen razon, desde siempre los array tienen inicio posicion 0
Saludos