En el ejercicio de programación de hoy vamos a trabajar con ANSI C para leer 10000 (diez mil) números de un archivo de texto y ordenarlos usando varios algoritmos, los cuales son:
Selección
Inserción
Burbuja
Rápido (Quicksort)
Mezcla (Merge)
Vamos a leer el archivo usando fgets y convertir cada número con atol, luego vamos a rellenar un arreglo con esos números (hasta una cierta cantidad de números) y ordenarlos comparando los tiempos de ejecución de cada algoritmo.
Leer números de archivo con C y comparar métodos de ordenamiento
Descripción del ejercicio
Este ejercicio de programación con C dice así:
Hacer un código de ordenamiento de selección, inserción, burbuja, mezcla y rápido, en el cual cada uno lea 1000, 5000 y finalmente los 10000 números que vienen en el archivo, también debe incluir un código el cual muestre el tiempo que tarda cada método de ordenamiento en ordenar 1000, luego 5000 y finalmente 10000 los 10000.
Los 1000, 5000 y 10000 deben ser números del archivo de los diez mil números.
Comencemos viendo la implementación de cada algoritmo y más adelante veremos cómo llenar un arreglo hasta cierto límite leyendo un archivo de texto así como medir el tiempo de ejecución.
voidseleccion(int arreglo[],int longitud){for(int i =0; i < longitud -1; i++){for(int j = i +1; j < longitud; j++){if(arreglo[i]> arreglo[j]){intercambiar(&arreglo[i],&arreglo[j]);}}}}
Te he mostrado todos los métodos para ordenar un arreglo en el lenguaje de programación C, pero para ordenar esos arrays hay que llenarlos primero, para ello tengo la siguiente función que recibe la cantidad de números que se leerán del archivo de texto:
voidrellenarArregloConNumeros(int*arreglo,int cantidadNumeros){char buferArchivo[MAXIMA_LONGITUD_CADENA];
FILE *archivo =fopen(NOMBRE_ARCHIVO,"r");if(archivo ==NULL){printf("No se puede abrir el archivo");return;}for(int i =0; i < cantidadNumeros; i++){if(fgets(buferArchivo, MAXIMA_LONGITUD_CADENA, archivo)==NULL){break;}strtok(buferArchivo,"\n");
arreglo[i]=atol(buferArchivo);}fclose(archivo);}
Con la función strtok removemos el salto de línea, y luego usamos atol para convertir la línea recién leída en entero. Debido a que no conocemos la cantidad de números en tiempo de ejecución estoy usando malloc para crear el array dinámico:
Y por si te lo preguntas, el algoritmo más rápido de todos los presentados para ordenar un arreglo usando C es quicksort. Por cierto, no puedo dejar el archivo con los diez mil números aquí pero puedes generarlo usando cualquier programa de tu preferencia.
Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto
No te pierdas ninguno de mis posts
Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.