Obtener conjuntos de una lista en C#

El siguiente código implementa la obtención de conjuntos de datos de una lista de elementos.

namespace Ejemplos
{
    using System;
    using System.Collections.Generic;
    using System.Linq;

    /// <summary>
    /// Clase que contiene la lógica de ejecución.
    /// </summary>
    class Program
    {
        /// <summary>
        /// Método principal.
        /// </summary>
        /// <param name="args">Argumentos.</param>
        static void Main(string[] args)
        {            
            List<int> numeros = new List<int>();
                        
            int tamañoConjunto = 15;
            int numeroConjunto = 1;
                        
            for (int iterador = 1; iterador <= 100; iterador++)
            {
                numeros.Add(iterador);
            }

            Console.WriteLine("Números:");
            Console.WriteLine(string.Join(",", numeros));
            Console.WriteLine();
            Console.WriteLine(string.Concat("Tamaño del conjunto: ", tamañoConjunto));
            Console.WriteLine();

            // Se recorre la lista de números y se extraen los conjuntos.
            for (int iterador = 0; iterador < numeros.Count(); iterador+=tamañoConjunto)
            {
                Console.WriteLine(string.Format("Conjunto: {0}", numeroConjunto));
                IEnumerable<int> conjunto = numeros.Skip(iterador).Take(tamañoConjunto);
                Console.WriteLine(string.Join(",", conjunto));
                Console.WriteLine();
                numeroConjunto++;
            }

            Console.WriteLine();
            Console.WriteLine("Presiona cualquier tecla para salir...");
            Console.ReadKey();
            Environment.Exit(0);
        }
    }
}

Método de ordenamiento burbuja en C#

El siguiente código implementa el algoritmo de ordenamiento burbuja en una aplicación de consola.

namespace OrdenamientoBurbuja
{
    #region [Bibliotecas de clases]
    using System;
    using System.Linq;
    #endregion

    /// <summary>
    /// Clase que encapsula la lógica del algoritmo de ordenamiento burbuja.
    /// </summary>
    public class Program
    {
        /// <summary>
        /// Método de ejecución principal.
        /// </summary>
        /// <param name="args">Argumentos.</param>
        public static void Main(string[] args)
        {
            Console.WriteLine("Ingresa los numeros a ordenar separados por comas(,) y presiona la tecla Enter.");
            int[] vector = Console.ReadLine().Replace(" ", "").Split(',').Select(x => Convert.ToInt32(x)).ToArray();
            Console.WriteLine();
            Console.WriteLine("Vector ordenado:");
            Console.WriteLine(string.Join(",", Ordenar(vector)));
            Console.WriteLine();
            Console.WriteLine("Presiona una tecla para salir.");
            Console.ReadKey();
        }

        /// <summary>
        /// Método que implementa el algoritmo de ordenamiento burbuja a un vector´.
        /// </summary>
        /// <param name="vector">Vector que contiene los elementos a ordenar.</param>
        /// <returns>Vector ordenado.</returns>
        private static int[] Ordenar(int[] vector)
        {
            int auxiliar;

            for (int i = 0; i < vector.Length; i++)
            {
                for (int j = 0; j < vector.Length - i - 1; j++)
                {
                    if (vector[j + 1] < vector[j])
                    {
                        auxiliar = vector[j + 1];
                        vector[j + 1] = vector[j];
                        vector[j] = auxiliar;
                    }
                }
            }

            return vector;
        }
    }
}

Método de ordenamiento por selección C#

El siguiente código implementa el algoritmo de ordenamiento por selección en una aplicación de consola.

namespace OrdenacionXSeleccion
{
    #region [Bibliotecas de clases]
    using System;
    using System.Linq;
    #endregion

    /// <summary>
    /// Clase que encapsula la lógica del algoritmo de ordenamiento por selección.
    /// </summary>
    public class Program
    {
        /// <summary>
        /// Método de ejecución principal.
        /// </summary>
        /// <param name="args">Argumentos.</param>
        public static void Main(string[] args)
        {
            Console.WriteLine("Ingresa los numeros a ordenar separados por comas(,) y presiona la tecla Enter.");
            int[] vector = Console.ReadLine().Replace(" ", "").Split(',').Select(x => Convert.ToInt32(x)).ToArray();
            Console.WriteLine();
            Console.WriteLine("Vector ordenado:");
            Console.WriteLine(string.Join(",", Ordenar(vector)));
            Console.WriteLine();
            Console.WriteLine("Presiona una tecla para salir.");
            Console.ReadKey();
        }

        /// <summary>
        /// Método que implementa el algoritmo de ordenación por selección a un vector´.
        /// </summary>
        /// <param name="vector">Vector que contiene los elementos a ordenar.</param>
        /// <returns>Vector ordenado.</returns>
        private static int[] Ordenar(int[] vector)
        {
            int menor, posicion, auxiliar;

            for (int i = 0; i < vector.Length - 1; i++)
            {
                menor = vector[i];
                posicion = i;

                for (int j = i + 1; j < vector.Length; j++)
                {
                    if (vector[j] < menor)
                    {
                        menor = vector[j];
                        posicion = j;
                    }
                }

                if (posicion != i)
                {
                    auxiliar = vector[i];
                    vector[i] = vector[posicion];
                    vector[posicion] = auxiliar;
                }
            }

            return vector;
        }
    }
}

Método de ordenamiento por inserción C#

El siguiente código implementa el algoritmo de ordenamiento por inserción en una aplicación de consola.

namespace OrdenacionXInsercion
{
    #region [Bibliotecas de clases]
    using System;
    using System.Linq;
    #endregion

    /// <summary>
    /// Clase que encapsula la lógica del método de ordenación por inserción.
    /// </summary>
    public class Program
    {
        /// <summary>
        /// Método de ejecución principal.
        /// </summary>
        /// <param name="args">Argumentos.</param>
        public static void Main(string[] args)
        {
            Console.WriteLine("Ingresa los numeros a ordenar separados por comas(,) y presiona la tecla Enter.");
            int[] vector = Console.ReadLine().Replace(" ","").Split(',').Select(x => Convert.ToInt32(x)).ToArray();
            Console.WriteLine();
            Console.WriteLine("Vector ordenado:");
            Console.WriteLine(string.Join(",", Ordenar(vector)));
            Console.WriteLine();
            Console.WriteLine("Presiona una tecla para salir.");
            Console.ReadKey();
        }

        /// <summary>
        /// Método que implementa el algoritmo de ordenación por inserción a un vector´.
        /// </summary>
        /// <param name="vector">Vector que contiene los elementos a ordenar.</param>
        /// <returns>Vector ordenado.</returns>
        private static int[] Ordenar(int[] vector)
        {
            int auxiliar;

            for (int i = 1; i < vector.Length; i++)
            {
                auxiliar = vector[i];

                for (int j = i - 1; j >= 0 && vector[j] > auxiliar; j--)
                {
                    vector[j + 1] = vector[j];
                    vector[j] = auxiliar;
                }
            }

            return vector;
        }
    }
}