elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Metodos de Ordenamiento en c#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Metodos de Ordenamiento en c#  (Leído 39,127 veces)
alexvem

Desconectado Desconectado

Mensajes: 182



Ver Perfil
Metodos de Ordenamiento en c#
« en: 4 Agosto 2008, 18:02 pm »

Insercion Directa

Código:
Console.WriteLine("Metodo de insercion directa");
                    int auxili;
                    int j;
                    for (int i = 0; i < numeros.Length ; i++)
                    {
                        auxili = numeros[i];
                        j = i - 1;
                        while (j >= 0 && numeros[j] > auxili)
                        {
                            numeros[j + 1] = numeros[j];
                            j--;
                        }
                        numeros[j + 1] = auxili;
                    }
                    for (int i = 0; i < longitud; i++)
                    Console.WriteLine(" " + numeros[i]);

Insercion Binaria

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

Shell
Código:
int salto = 0;
                    int sw=0;
                    int auxi = 0;
                    int e=0;
                    salto =longitud /2;
                    while (salto >0)
                    {
                        sw=1;
                        while (sw!=0)
                        {
                            sw=0;
                            e=1;
                            while (e<=(longitud -salto ))
                            {
                                if (numeros [e-1]>numeros [(e-1)+salto ])
                                {
                                    auxi =numeros [(e-1)+salto ];
                                    numeros [(e-1)+salto ]=numeros [e-1];
                                    numeros [(e-1)]=auxi;
                                    sw=1;
                                }
                                e++;
                            }
                        }
                        salto =salto /2;
                    }
                    for (int i = 0; i < longitud; i++)
                    Console.WriteLine(" " + numeros[i]);
Quick Sort

Código:
int izquierda,derecha;
                    int pivot, i_det, d_det;
                    i_det = izquierda;
                    d_det = derecha;
                    pivot = numeros[izquierda];

                    while (izquierda <derecha )
                    {
                        while ((numeros [derecha ]>=pivot ) &&(izquierda <derecha ))
                        {
                            derecha --;
                        }
                        if (izquierda !=derecha )
                        {
                            numeros [izquierda]=numeros [derecha ];
                            izquierda ++;
                        }
                        while ((numeros [izquierda ]<=pivot )&&(izquierda <derecha ))
                        {
                            izquierda ++;
                        }
                        if (izquierda !=derecha )
                        {
                            numeros [derecha]=numeros [izquierda ];
                            derecha --;
                        }
                    }
                    numeros[izquierda] = pivot;
                    pivot = izquierda;
                    izquierda = i_det;
                    derecha = d_det;

                    if (izquierda < pivot)
                    {
                        quicksort(izquierda, pivot - 1);
                    }
                    if (derecha > pivot)
                    {
                        quicksort(pivot + 1, derecha);
                    }

Burbuja

Código:
int a,b,t;

               for(a=1;a<longitud ;a++)
                        for(b=longitud -1;b>=a;b--)
                        {
                            if (numeros [b-1]>numeros [b])
                            {
                                t=numeros [b-1];
                                numeros [b-1]=numeros [b];
                                numeros [b]=t;
                            }
                        }
                    //desplegar arreglo
                    Console.WriteLine("Bubble sort");
                    for (int i = 0; i < longitud; i++)
                    Console.WriteLine(" " + numeros[i]);

Shaker

Código:
int n = numeros.Length;
                    int izq = 1;
                    int k = n;
                    int aux;
                    int der = n;

                    do
                    {
                        for (int i = der; i >= izq; i--)
                        {
                            if (numeros[i - 1] > numeros[i])
                            {
                                aux = numeros[i - 1];
                                numeros[i - 1] = numeros[i];
                                numeros[i] = aux;
                                k = i;
                            }
                        }
                        izq =k+1;
                        for (int i=izq;i<=der;i++)
                        {
                            if (numeros [i-1]>numeros [i])
                            {
                                aux=numeros [i-1];
                                numeros [i-1]=numeros [i];
                                numeros [i] =aux;
                                k=1;
                            }
                            }
                        der =k-1;
                    }
                    while (der>=izq );
                   
                    for (int i = 0; i < longitud; i++)
                    Console.WriteLine(" " + numeros[i]);


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
METODOS DE ORDENAMIENTO
Programación C/C++
ANTÓN RAMIREZ 1 15,066 Último mensaje 12 Diciembre 2010, 12:53 pm
por Garfield07
[Métodos de ordenamiento] QuickSort [C++]
Programación C/C++
2Fac3R 0 2,673 Último mensaje 29 Julio 2015, 20:47 pm
por 2Fac3R
Problema con interfaz metodos de ordenamiento y arreglo (NetBeans)
Java
RG4L 2 3,071 Último mensaje 3 Diciembre 2016, 19:22 pm
por RG4L
Listas Enlazadas Simples Metodos de ordenamiento
Programación C/C++
david.albornoz 1 8,747 Último mensaje 14 Octubre 2018, 09:14 am
por Beginner Web
Metodos de Ordenamiento en cmd
Scripting
FJCR 1 2,129 Último mensaje 24 Octubre 2018, 19:48 pm
por WHK
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines