add bubble sort call and time its execution
This commit is contained in:
parent
e7655e3f5d
commit
5b77033905
78
src/sort.c
78
src/sort.c
@ -17,6 +17,8 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include "random.h"
|
#include "random.h"
|
||||||
|
#include "timer.h"
|
||||||
|
#include "bubble_sort.h"
|
||||||
|
|
||||||
#define SORT_VERSION "1.0.0"
|
#define SORT_VERSION "1.0.0"
|
||||||
|
|
||||||
@ -36,6 +38,7 @@ void print_usage() {
|
|||||||
fprintf(stdout, " -e, --elegir el usuario debe elegir los \"n\" valores de\n");
|
fprintf(stdout, " -e, --elegir el usuario debe elegir los \"n\" valores de\n");
|
||||||
fprintf(stdout, " elementos a ordenar, sin esta opción los\n");
|
fprintf(stdout, " elementos a ordenar, sin esta opción los\n");
|
||||||
fprintf(stdout, " valores son elegido por el programa al azar\n");
|
fprintf(stdout, " valores son elegido por el programa al azar\n");
|
||||||
|
fprintf(stdout, " -i, --imprimir imprimir el array antes y despues de ordenar\n");
|
||||||
fprintf(stdout, " -v, --version mostrar la versión del programa\n");
|
fprintf(stdout, " -v, --version mostrar la versión del programa\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,15 +51,24 @@ void extra_algorithm() {
|
|||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void print_array(int *array, int n) {
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
fprintf(stdout, "%d ", array[i]);
|
||||||
|
}
|
||||||
|
fprintf(stdout, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La entrada del programa
|
* La entrada del programa
|
||||||
* @param argc La cantidad de argumentos pasado al programa
|
* @param argc La cantidad de argumentos pasado al programa
|
||||||
* @return Retorna el codigo de error o 0 por exito
|
* @return Retorna el codigo de error o 0 por exito
|
||||||
*/
|
*/
|
||||||
int main (int argc, char **argv) {
|
int main (int argc, char **argv) {
|
||||||
int i;
|
long long i;
|
||||||
int n = 10;
|
int n = 10;
|
||||||
int elegir = 0;
|
int elegir = 0;
|
||||||
|
int imprimir = 0;
|
||||||
int algoritmo = -1;
|
int algoritmo = -1;
|
||||||
int opt;
|
int opt;
|
||||||
int long_index = 0;
|
int long_index = 0;
|
||||||
@ -69,6 +81,7 @@ int main (int argc, char **argv) {
|
|||||||
{"selection", no_argument, 0, 's'},
|
{"selection", no_argument, 0, 's'},
|
||||||
{"n", required_argument, 0, 'n'},
|
{"n", required_argument, 0, 'n'},
|
||||||
{"elegir", no_argument, 0, 'e'},
|
{"elegir", no_argument, 0, 'e'},
|
||||||
|
{"imprimir", no_argument, 0, 'i'},
|
||||||
{"version", no_argument, 0, 'v'},
|
{"version", no_argument, 0, 'v'},
|
||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
@ -117,7 +130,7 @@ int main (int argc, char **argv) {
|
|||||||
algoritmo = 5;
|
algoritmo = 5;
|
||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
n = atoi(optarg);
|
n = atol(optarg);
|
||||||
if (n <= 1) {
|
if (n <= 1) {
|
||||||
fprintf(stderr, "Error: n tiene que ser mayor de 1!\n");
|
fprintf(stderr, "Error: n tiene que ser mayor de 1!\n");
|
||||||
return 3;
|
return 3;
|
||||||
@ -126,6 +139,9 @@ int main (int argc, char **argv) {
|
|||||||
case 'e':
|
case 'e':
|
||||||
elegir = 1;
|
elegir = 1;
|
||||||
break;
|
break;
|
||||||
|
case 'i':
|
||||||
|
imprimir = 1;
|
||||||
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
printf("sort versión: %s\n", SORT_VERSION);
|
printf("sort versión: %s\n", SORT_VERSION);
|
||||||
return 0;
|
return 0;
|
||||||
@ -136,23 +152,14 @@ int main (int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (algoritmo == -1) {
|
int *array = malloc(sizeof(int) * n);
|
||||||
fprintf(stderr, "Error: No se seleccionó un algoritmo!\n");
|
|
||||||
print_usage();
|
|
||||||
return 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
int array[n];
|
|
||||||
|
|
||||||
// Llenar el array con valores para ordenar después
|
// Llenar el array con valores para ordenar después
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
if (elegir == 0) {
|
if (elegir) {
|
||||||
array[i] = gen_rand(0, 100000);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
opt = 0;
|
opt = 0;
|
||||||
while (opt <= 1) {
|
while (opt <= 1) {
|
||||||
fprintf(stdout, "Elegir elemento %d: ", i + 1);
|
fprintf(stdout, "Elegir elemento %lli: ", i + 1);
|
||||||
fscanf(stdin, "%d", &opt);
|
fscanf(stdin, "%d", &opt);
|
||||||
if (opt <= 1) {
|
if (opt <= 1) {
|
||||||
fprintf(stdout, "Número invalido! Tiene que ser mayor de 1!\n");
|
fprintf(stdout, "Número invalido! Tiene que ser mayor de 1!\n");
|
||||||
@ -160,6 +167,49 @@ int main (int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
array[i] = opt;
|
array[i] = opt;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
array[i] = gen_rand(-1000, 5000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (imprimir) {
|
||||||
|
fprintf(stdout, "\nAntes:\n");
|
||||||
|
print_array(array, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (algoritmo == 0) {
|
||||||
|
// merge sort
|
||||||
|
}
|
||||||
|
else if (algoritmo == 1) {
|
||||||
|
// quick sort
|
||||||
|
}
|
||||||
|
else if (algoritmo == 2) {
|
||||||
|
start_timer();
|
||||||
|
bubble_sort(array, n);
|
||||||
|
stop_timer();
|
||||||
|
}
|
||||||
|
else if (algoritmo == 3) {
|
||||||
|
// bitonic sort
|
||||||
|
}
|
||||||
|
else if (algoritmo == 4) {
|
||||||
|
// count sort
|
||||||
|
}
|
||||||
|
else if (algoritmo == 5) {
|
||||||
|
// selection sort
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fprintf(stderr, "Error: No se seleccionó un algoritmo valido!\n");
|
||||||
|
print_usage();
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (imprimir) {
|
||||||
|
fprintf(stdout, "\nDespués:\n");
|
||||||
|
print_array(array, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(array);
|
||||||
|
|
||||||
|
print_timer();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user