Sunteți pe pagina 1din 7

Analisis de Algoritmos

1. Metodos de ordenamiento
El siguiente programa en C,muestra los 3 algoritmos de ordenamiento implementados, los
cuales ordenan un vector de tamaño n, y con numero enteros aleatorios.

#include<stdio.h>
#include<time.h>
void sort(int A[], int tamSort);
void burbuja(int B[],int tamBurb);
void insercion(int C[], int tamInser);
void copiaArray(int arrayIni[],int arrayTemp[],int tamInter); //copea lo que hay en "arrayIni" en
"arrayTemp"
void imprimeArray(int D[],int tamImpr);
int main(){
srand(time(NULL));
int tam=(rand()%20)+2; //genera tamaño aleatorio
int array[tam],array2[tam];;
int i;

for(i=0;i<tam;i++){ //llena array


array[i]=(rand()%60)+10;} //de manera aleatoria
copiaArray(array2,array,tam);

imprimeArray(array,tam);printf("\tARREGLO INICIAL\n");
insercion(array,tam);
imprimeArray(array,tam);printf("\tDESPUES DE INSERCION\n");

copiaArray(array,array2,tam);
imprimeArray(array,tam);printf("\tARREGLO INICIAL\n");
sort(array,tam);
imprimeArray(array,tam);printf("\tDESPUES DE SORT\n");

copiaArray(array,array2,tam);
imprimeArray(array,tam);printf("\tARREGLO INICIAL\n");
burbuja(array,tam);
imprimeArray(array,tam);printf("\tDESPUES DE BURBUJA\n");
return 0;

}
void copiaArray(int arrayIni[],int arrayTemp[],int tamInter){
int i;
for(i=0;i<tamInter;i++){
arrayIni[i]=arrayTemp[i];
}
}
void imprimeArray(int D[],int tamImpr){
int i;
for(i=0;i<tamImpr;i++){ //imprime el array
printf("%i ",D[i]);}
}

//METODO DE SORT
void sort (int A[], int tamSort) {
int min,i,j,aux;
for (i=0; i<tamSort-1; i++)
{
min=i;
for(j=i+1; j<tamSort; j++)
if(A[min] > A[ j])
min=j;
aux=A[min];
A[min]=A[i];
A[i]=aux ;
}

//METODO DE INSERCION
void insercion(int C[], int tamInser){
int i, j, temp;
for(i=0; i<tamInser; i++){
temp=C[i];
j=i-1;
while(j>=0 && C[ j] >temp){
C[ j+1] = C[ j];
j--;
}

C[ j+1] = temp;
}
}

//METODO DE LA BURBUJA
void burbuja(int B[],int tamBurb){
int i,j,aux;
for(i=1; i<tamBurb; i++){
for(j=0; j<tamBurb-i; j++){
if(B[ j]>B[ j+1]){
aux= B[ j];
B[ j] = B[ j+1];
B[ j+1]= aux;
}
}
}
}

Se genero un vector de tamaño N, con numeros aleatorios. Y se muestra el vector antes de ser
ordenado-
El primer metodo en ser llamado es el de Inserccion. Este ordena los elementos y se muestran
los elementos ordenados.Posteriormente se vuelve a mostrar el vector original sin ordenar

El segundo metodo en ser llamado es el de Sort. Este ordena los elementos y se muestran los
elementos ordenados.Posteriormente se vuelve a mostrar el vector original sin ordenar

El tercer metodo en ser llamado es el de la Burbuja. Este ordena los elementos y se muestran
los elementos ordenados
2. Tiempo de Ejecucion
El siguiente codigo en C, crea un archivo de texto que contiene, una tabla del tiempo en
segundos que tarda cada algoritmo para ordenar un numero N=1000 de datos.

#include<stdio.h>
#include<time.h>
void sort (int A[], int tamSort);
void burbuja(int B[],int tamBurb);
void insercion(int C[], int tamInser);
void copiaArray(int arrayIni[],int arrayTemp[],int tamInter);
void imprimeArray(int D[],int tamImpr);
int main(){
FILE *mifile;
char* namefile="DataTable.txt";
mifile=fopen(namefile,"w");
if(mifile==NULL){return -1;}

clock_t tiSort,tfSort,tiBur,tfBur,ti_1,tf_1;
double timeSort,timeBurb,timeInser;
srand(time(NULL));
int tam,i,n;

fprintf (mifile, "%s %c", "Tamanio",'\t');


fprintf (mifile, "%s %c", "Insercion",'\t');
fprintf (mifile, "%s %c %c","Sort",'\t','\t');
fprintf (mifile, "%s %c", "Burbuja",'\t');
fprintf (mifile, "%c", '\n');

for(n=10;n<=1000;n=n+10){
tam=n;
int array[tam],array2[tam];
for(i=0;i<tam;i++){ //llena array
array[i]=(rand()%300)+10;}
copiaArray(array2,array,tam);

ti_1=clock();//INSERCION
insercion(array,tam);
tf_1=clock();
timeInser=((double)(tf_1-ti_1)/(double)CLOCKS_PER_SEC);
//(double)CLOCKS_PER_SEC)

copiaArray(array,array2,tam);
tiSort=clock();//SORT
sort(array,tam);
tfSort=clock();
timeSort=((double)(tfSort-tiSort)/(double)CLOCKS_PER_SEC);

copiaArray(array,array2,tam);

tiBur=clock();//BURBUJA
burbuja(array,tam);
tfBur=clock();
timeBurb=((double)(tfBur-tiBur)/(double)CLOCKS_PER_SEC);

fprintf (mifile, "%d %c %c", tam, '\t','\t');


fprintf (mifile, "%lf %c", timeInser, '\t');
fprintf (mifile, "%lf %c", timeSort, '\t');
fprintf (mifile, "%lf %c", timeBurb, '\n');

printf("Datos guardados en: Data1.txt");


return 0;
}

void copiaArray(int arrayIni[],int arrayTemp[],int tamInter){


int i;
for(i=0;i<tamInter;i++){
arrayIni[i]=arrayTemp[i];
}
}

void imprimeArray(int D[],int tamImpr){


int i;
for(i=0;i<tamImpr;i++){ //imprime el array
printf("array[%i]:%i\n",i,D[i]);}
}

void sort(int A[], int tamSort) {


int min,i,j,aux;
for (i=0; i<tamSort-1; i++)
{
min=i;
for(j=i+1; j<tamSort; j++)
if(A[min] > A[ j])
min=j;
aux=A[min];
A[min]=A[i];
A[i]=aux ;
}

void burbuja(int B[],int tamBurb){


int i,j,aux;
for(i=1; i<tamBurb; i++){
for(j=0; j<tamBurb-i; j++){
if(B[ j]>B[ j+1]){
aux= B[ j];
B[ j] = B[ j+1];
B[ j+1]= aux;
}
}
}
}

void insercion(int C[], int tamInser){


int i, j, temp;
for(i=0; i<tamInser; i++){
temp=C[i];
j=i-1;
while(j>=0 && C[ j] >temp){
C[ j+1] = C[ j];
j--;
}

C[ j+1] = temp;
}
}

Se genera un archivo de texto plano de la siguiente forma, en la misma ruta que esta el
archivo.c
Tamanio Insercion Sort Burbuja
10 0.000002 0.000002 0.000001
20 0.000002 0.000003 0.000004
30 0.000004 0.000006 0.000009
40 0.000006 0.000008 0.000015
50 0.000007 0.000011 0.000020
60 0.000010 0.000016 0.000027
70 0.000012 0.000020 0.000035
80 0.000015 0.000025 0.000052
90 0.000021 0.000031 0.000061
100 0.000021 0.000038 0.000080
110 0.000027 0.000044 0.000106
120 0.000032 0.000051 0.000108
130 0.000037 0.000060 0.000126
140 0.000043 0.000068 0.000159
150 0.000051 0.000076 0.000167
160 0.000054 0.000086 0.000189
170 0.000065 0.000096 0.000247
180 0.000067 0.000107 0.000250
190 0.000075 0.000118 0.000267
200 0.000079 0.000131 0.000308
210 0.000094 0.000143 0.000352
220 0.000105 0.000166 0.000380
230 0.000113 0.000169 0.000432
240 0.000120 0.000183 0.000453
250 0.000125 0.000194 0.000490

S-ar putea să vă placă și