Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*******************************************************************************
- 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;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment