/*******************************************************************************
Búsqueda y Ordenamiento
by
Marcos Andrés Huck
2013 - UTN-FRP
www.marcoshuck.com
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#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;
}
}
}
Comments