marcoshuck icon

Búsqueda y ordenamiento

marcoshuck | PRO | 08/17/13 02:17:50 AM UTC | 0 ⭐ | 476 👁️ | Never ⏰ | []
C |

3.07 KB

|

None

|

0 👍

/

0 👎

/*******************************************************************************
                           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