Demo entry 6639447

Ordenamiento burbuja

   

Submitted by anonymous on Sep 10, 2017 at 06:02
Language: C. Code size: 2.8 kB.

/*
Burbuja Simple
Rodriguez Cervantes Arturo
Unidad de Apendizaje: Analisis de Algoritmos
Agosto 2017
ESCOM-IPN
Programa que Ordena numeros de un archivo de texto con el algoritmo de Bubuja Simplie
Compilacion: "gcc BurbujaS.c tiempo.o -o BurbujaS"
Ejecución: "./Burbuja Simple n" (donde n es el numero de elementos a leer)
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "tiempo.h"

//Algoritmo de Burbuja Simple
int BurbujaSimple(int num, int * Arreglo){
	int Temp;
	for(int i=0;i<num-2;i++){
		for(int j=0;j<(num-1)-i;j++){
			if(Arreglo[j]>Arreglo[j+1]){
				Temp = Arreglo[j];
				Arreglo[j]=Arreglo[j+1];
				Arreglo[j+1]=Temp;
			}
		}
	}
}


//Programa Principal
int main(int argc,char *argv[]){
	if(argc < 2)return 0;	
	int numDatos=atoi(argv[1]);// tomar valor de n
	double utime0, stime0, wtime0,utime1, stime1, wtime1; //Variables para medición de tiempos	
	printf("BurbujaSimple:%d\n", numDatos);//Saber que algoritmo se esta ejecutando y que n
	int * Arreglo = (int *)malloc(numDatos*sizeof(int));//Se reserva memoria
	if(Arreglo==NULL)
		printf("No se pudo asignar la memoria");
	FILE * Entrada =fopen("numeros10millones.txt","r");//Se abre el Archivo "Numeros.txt"
	for (int i = 0; i <numDatos; i++)
	{
		fscanf(Entrada,"%d",&Arreglo[i]);// se van tomando los valores del del archivo en el arreglo hasta n
	}
	fclose(Entrada);

	uswtime(&utime0, &stime0, &wtime0);
	BurbujaSimple(numDatos,Arreglo);//Se realiza la Funcion de Ordenamiento
	uswtime(&utime1, &stime1, &wtime1);

	FILE * Salida2 =fopen("SalidaBurbujaS.txt","a");

	//Cálculo del tiempo de ejecución del programa
	fprintf(Salida2,"\n\nBurbuja Simple: %d",numDatos);
	fprintf(Salida2,"\nreal (Tiempo total)  %.10f s\n",  wtime1 - wtime0);
	fprintf(Salida2,"user (Tiempo de procesamiento en CPU) %.10f s\n",  utime1 - utime0);
	fprintf(Salida2,"sys (Tiempo en acciónes de E/S)  %.10f s\n",  stime1 - stime0);
	fprintf(Salida2,"CPU/Wall   %.10f %% \n",100.0 * (utime1 - utime0 + stime1 - stime0) / (wtime1 - wtime0));
	
	//Mostrar los tiempos en formato exponecial
	fprintf(Salida2,"\nreal (Tiempo total)  %.10e s\n",  wtime1 - wtime0);
	fprintf(Salida2,"user (Tiempo de procesamiento en CPU) %.10e s\n",  utime1 - utime0);
	fprintf(Salida2,"sys (Tiempo en acciónes de E/S)  %.10e s\n",  stime1 - stime0);
	fprintf(Salida2,"CPU/Wall   %.10f %% \n",100.0 * (utime1 - utime0 + stime1 - stime0) / (wtime1 - wtime0));
	//******************************************************************
	fclose(Salida2);


	//quitar comentario sigueinte si se desea en la salida un archivo con los numero ordenados
	/*FILE * Salida1 = fopen("SalidaP1BS.txt","w");
	for (int i = 0; i <numDatos ; i++)
	{
		fprintf(Salida1,"%d\n",Arreglo[i]);
	}
	fclose(Salida1);*/
	return 0;
}

This snippet took 0.00 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).