Algoritmo de Ordenación por Burbuja y Manejo de Ficheros en C#

Informática4,35 KB

Ordenación de Vectores con Método Burbuja y Manejo de Ficheros en C#

El siguiente programa en C# demuestra el procesamiento de datos numéricos mediante la lectura de un archivo de texto, la aplicación del algoritmo de ordenación de la burbuja y el almacenamiento de los resultados en un nuevo fichero.

Código Fuente Completo de la Clase Practica16

public class Practica16
{
    static string PintarVector(int[] vector)
    {
        string vectorText = "[ ";
        for (int i = 0; i < vector.Length; i++)
        {
            vectorText += String.Format("{0,4} ", vector[i]);
        }
        vectorText += " ]";
        return vectorText;
    }

    static int ContarLineasFichero(string path)
    {
        StreamReader lectorLineas = new StreamReader(path);
        string linea;
        int numeroLineas = 0;
        while ((linea = lectorLineas.ReadLine()) != null)
        {
            numeroLineas++;
        }
        lectorLineas.Close();
        return numeroLineas;
    }

    static int[] LeerEnterosDeFichero(string path)
    {
        int[] numeros = new int[ContarLineasFichero(path)];
        StreamReader lectorNums = new StreamReader(path);
        string linea;
        int indice = 0;
        while ((linea = lectorNums.ReadLine()) != null)
        {
            numeros[indice] = Convert.ToInt32(linea);
            indice++;
        }
        lectorNums.Close();
        return numeros;
    }

    static void OrdenarVectorMetodoBurbuja(ref int[] vector, out int pasadas, out int intercambios)
    {
        intercambios = 0;
        pasadas = 0;
        while (true)
        {
            pasadas++;
            bool intercambio = false;
            for (int j = 0; j < vector.Length; j++)
            {
                if (j != vector.Length - 1 && vector[j] > vector[j + 1])
                {
                    int aux = vector[j];
                    vector[j] = vector[j + 1];
                    vector[j + 1] = aux;
                    intercambio = true;
                    intercambios++;
                }
            }
            if (!intercambio) break;
        }
    }

    public static void Main()
    {
        string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        string carpeta = desktop + @"\MisDatos\";
        string pathEntrada = carpeta + "datos.in.txt";
        string pathSalida = carpeta + "datos.out.txt";
        int[] listanumeros = LeerEnterosDeFichero(pathEntrada);
        string vectorSinOrdenar = PintarVector(listanumeros);
        Console.WriteLine("Vector a ordenar: {0} ", vectorSinOrdenar);
        int intercambios, pasadas;
        OrdenarVectorMetodoBurbuja(ref listanumeros, out pasadas, out intercambios);
        Console.WriteLine("Vector ordenado : {0} ", PintarVector(listanumeros));
        Console.WriteLine("Número de pasadas realizadas={0} e intercambios={1}", pasadas, intercambios);
        StreamWriter escritor = new StreamWriter(pathSalida);
        escritor.WriteLine("Vector sin ordenar: {0}", vectorSinOrdenar);
        escritor.WriteLine("Vector ordenado : {0}", PintarVector(listanumeros));
        escritor.WriteLine("Número de pasadas realizadas={0} e intercambios={1}", pasadas, intercambios);
        escritor.Close();
        Console.WriteLine("Fin del programa.");
        Console.ReadLine();
    }
}

Componentes Principales del Algoritmo

  • PintarVector: Da formato visual al arreglo de enteros entre corchetes con espaciado uniforme para su presentación por consola o archivo.
  • ContarLineasFichero: Emplea StreamReader para calcular la cantidad de elementos disponibles y dimensionar adecuadamente el vector.
  • LeerEnterosDeFichero: Carga y convierte cada línea de texto del archivo de entrada a un valor de tipo int.
  • OrdenarVectorMetodoBurbuja: Implementa el ordenamiento por burbuja optimizado mediante una bandera booleana de control de intercambios, computando las pasadas e intercambios totales a través de parámetros out.
  • Main: Gestiona las rutas en el escritorio (Environment.SpecialFolder.Desktop), coordina la entrada/salida y almacena los resultados mediante StreamWriter.

Descargar

PDF Word HTML