METODOS DE ORDENACION EN C#

Esto de ordenar los datos también es importante el algunas cuestiones de la progrmación por eso aqui estan los metodos de ordenacion mas famosos en un ejemplo en modo consola:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace MetodosOrdenacion
{
    class Program
    {
        static void Main(string[] args)
        {           
            Console.Write("cuantos numeros desea ingresar: ");
            int n = int.Parse(Console.ReadLine());
            int []numeros =new int [n];
            Console.WriteLine("Ingrese sus {0} numero:",n);
            for (int i = 0; i < n;i++)
            {
                numeros[i]=(int.Parse(Console.ReadLine()));
            }

            Console.Write(@"Que metodo desea llevar a cabo
1.- insercion
2.- shell
3.- Quick Sort
4.- burbuja       (");
            int x=int.Parse(Console.ReadLine());
            Console.WriteLine("");
            switch(x)
            {
                case 1:
                    Console.WriteLine("Metodo de insercion directa\n");
                    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 < numeros.Length; i++)
                    Console.WriteLine(" " + numeros[i]);
                    break;
                //-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
                //-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
                case 2:
                    Console.WriteLine("Metodo de Shell\n");
                    int salto = 0;
                    int sw=0;
                    int auxi = 0;
                    int e=0;
                    salto = numeros.Length / 2;
                    while (salto >0)
                    {
                        sw=1;
                        while (sw!=0)
                        {
                            sw=0;
                            e=1;
                            while (e <= (numeros.Length - 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 < numeros.Length; i++)
                    Console.WriteLine(" " + numeros[i]);
                    break;
                //-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
                //-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
                case 3:
                    Console.WriteLine("metodo de Quick sorf");
                    quicksort(numeros, 0, numeros.Length - 1);
                    for (int i = 0; i < numeros.Length; i++)
                    {

                        Console.WriteLine(numeros[i]);
                    }
                    break;

                //-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
                //-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
                case 4:
                    Console.WriteLine("Metodo de la burbuja");
                    int temp;

                    for (int i = 0; i < numeros.Length; i++)
                    {
                        for (int k = i + 1; k < numeros.Length; k++)
                        {
                            if (numeros[i] > numeros[k])
                            {
                                temp = numeros[i];
                                numeros[i] = numeros[k];
                                numeros[k] = temp;
                            }
                        }
                    }
                    for (int i = 0; i < numeros.Length; i++)
                    {
                        Console.WriteLine(" " + numeros[i]);
                    }
                    break;

                default:
                    Console.WriteLine("Opcion no validad\n\nFin del programa");
                    break;

            }

            Console.ReadKey();
        }



        public static void quicksort(int[] vector, int primero, int ultimo)
        {
            int i, j, central;
            double pivote;

            central = (primero + ultimo) / 2;
            pivote = vector[central];
            i = primero;
            j = ultimo;

            do
            {
                while (vector[i] < pivote) i++;
                while (vector[j] > pivote) j--;

                if (i <= j)
                {
                    int temp;
                    temp = vector[i];
                    vector[i] = vector[j];
                    vector[j] = temp;
                    i++;
                    j--;

                }
            } while (i <= j);

            if (primero < j)
            {
                quicksort(vector, primero, j);
            }
            if (i < ultimo)
            {
                quicksort(vector, i, ultimo);
            }
        }
    }   
}




Comentarios

  1. muy elegante el algoritmo me sirvió demasiado (Y)

    ResponderEliminar
  2. "FELICIDADES ESTA SUPER BIEN EL ALGRITMO" :)
    EN HORA BUENA SALUDOS DESDE CARLOS A CARRILLO VER.

    ResponderEliminar
  3. Hola, ¿existe la posibilidad de utilizar algún método de ordenación para ordenar un directorio con varios archivos de diferentes extensiones en otras carpetas y que el nombre de estos sea una fecha con unas letras?

    ResponderEliminar
  4. me recuerda mucho a los algoritmo que me hacian hacer en la facu hace 2 años atras.

    buen aporte

    abrazo

    ResponderEliminar
  5. muy bueno, ......... thanks

    ResponderEliminar
  6. como se puede hacer estos metodos pero con numeros con punto decimal??

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Pedir datos en C#

Juego del ahoracdo en C#

C# MODO VISUAL (por fin) [Calculadora sencilla]