Método de Ordenamiento de Inserción Binaria en C#

Método de Ordenamiento de Inserción Binaria en C# 

La Inserción Binaria, es una mejora de la Inserción Directa.
La Inserción Binaria es un método de inserción, que difiere de la Inserción Directa simplemente en la búsqueda de la posición de la Inserción.
Veamos un ejemplo de como funciona este método de ordenamiento de Inserción Binaria, analizando paso a paso.
1. Hallamos el elemento central del área comprendida por la parte ordenada más la posición del elemento a insertar.


2. Comparamos el elemento central con el elemento que queremos insertar. Si dicho elemento central es menor o igual, nos quedamos con la parte derecha (Sin incluir el elemento central). En caso contrario, nos quedamos con la parte izquierda incluyendo al elemento central.



3. Repetimos el mismo proceso sobre el área con la que nos quedamos, hasta que dicha área sea nula.



4. Cuando el área sea nula, tendremos la posición de inserción.





A continuación veamos un ejemplo en Pseudo-Código Para el Método de Inserción Binaria





Ejemplo del Código Implementado 



Un ejemplo de método de inserción binaria en C# 

                    int auxiliar;
                    int q;
                    int izqui;
                    int dere;
                    for (int i = 0; i < numeros.Length; i++)
                    {
                        auxiliar = numeros[i];
                        izqui = 0;
                        dere = i - 1;
                        while (izqui <= dere)
                        {
                            q = ((izqui + dere) / 2);
                            if (auxiliar < numeros[q])
                            {
                                dere = q - 1;
                            }
                            else
                            {
                                izqui = q + 1;
                            }
                            j = i - 1;
                            while (j >= izqui)
                            {
                                numeros[j + 1] = numeros[j];
                                j = j - 1;
                            }
                            numeros[izqui] = auxiliar;
                        }
                    }
                    for (int i = 0; i < longitud; i++)
                        Console.WriteLine(" " + numeros[i]);

No hay comentarios:

Publicar un comentario