/******************************************************************************* Búsqueda y Ordenamiento by Marcos Andrés Huck 2013 - UTN-FRP www.marcoshuck.com *******************************************************************************/ #include #include #include #define MAX_SIZE_V 10 /* Cantidad de elementos del vector */ #define MAX_RAND 220 /* Valor máximo del intervalo a generar */ #define MIN_RAND 3 /* Valor mínimo del intervalo a generar */ #define METODO 0 /* 0: Metodo minimo sucesivos | 1: Metodo electronico */ #define ORDENAMIENTO 1 /* 0: Ascendente | 1: Descendente */ // Operación de vectores void generar_vector(int v[], int size); void mostrar_vector(int v[], int size); // Métodos void metodo_electronico(int v[], int size); void metodo_minimos(int v[], int size); int main(int argc, char *argv[]) { int v[MAX_SIZE_V]; /* Vector */ printf("Vector de %d componentes:\n", MAX_SIZE_V); generar_vector(v, MAX_SIZE_V); mostrar_vector(v, MAX_SIZE_V); printf("Rango de los elementos del vector enerado: [%d-%d]\n", MIN_RAND, MAX_RAND); #if METODO == 0 metodo_minimos(v, MAX_SIZE_V); printf("Vector ordenado: (minimos sucesivos)\n"); #elif METODO == 1 metodo_electronico(v, MAX_SIZE_V); printf("Vector ordenado: (electronico)\n"); #endif mostrar_vector(v, MAX_SIZE_V); system("PAUSE>NULL"); return 0; } /* Generar vector */ void generar_vector(int v[], int size) { int i; /* Contador */ srand(time(0)); for(i = 0; i < size; i++) { v[i] = (rand()%(MAX_RAND - MIN_RAND+1)+MIN_RAND); } } /* Mostrar vector */ void mostrar_vector(int v[], int size) { int i; /* Contador */ printf("["); for(i = 0; i < size; i++) { if(i != size-1) printf("%3d ", v[i]); else printf("%3d", v[i]); } printf("]\n\a"); } /* Método de minimos sucesivos */ void metodo_minimos(int v[], int size) { int i, /* Contador */ j, /* Contador */ aux; /* Variable auxiliar */ for(i = 0; i < size-1; i++) { for(j=i+1; j < size; j++) { #if ORDENAMIENTO == 0 if(v[i] > v[j]) #elif ORDENAMIENTO == 1 if(v[i] < v[j]) #endif { aux = v[i]; v[i] = v[j]; v[j] = aux; } } } } /* Método electronico */ void metodo_electronico(int v[], int size) { int i, /* Contador */ aux; /* Variable auxiliar */ for(i = 0; i < size-1; i++) { #if ORDENAMIENTO == 0 if(v[i] > v[i+1]) #elif ORDENAMIENTO == 1 if(v[i] < v[i+1]) #endif { aux = v[i]; v[i] = v[i+1]; v[i+1] = aux; if(i > 0) i=i-2; } } }