Foro de elhacker.net

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
Código:
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
Código:
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