jueves, 12 de marzo de 2020

Ordenamiento de vectores


Ordenamiento de vectores

Ordenar es clasificar los datos de uno o más vectores según criterios en forma ascendente o descendente, si un vector esta relacionado con mas vectores solo se ordena el vector base o principal y al mover los datos se los hace con todos los que tenga relación

Vector original                      vector ordenado

Cod.Estudiante
nota

Cod.Estudiante
nota
3
8

1
7
2
9

2
9
4
6

3
8
5
4

4
6
1
7

5
4



METODO DE LA BURBUJA

Existen diferentes técnicas de ordenamiento la que manejaremos es la de la burbuja, lleva este nombre porque entra en un lazo y queda mas arriba el elemento mas liviano (en el caso de ser ordenado ascendentemente), y se repite el proceso para el segundo, tercero y así hasta el final.

Antes de realizar el ordenamiento hay que entender como se reemplaza los datos de una variable a otra porque es un proceso necesario para el ordenamiento.

Para realizar el intercambio de valores de una variable a otra se pensaría realizar lo siguiente:

a =2;
b = 5;

a=b;   proceso incorrecto al realizar una prueba quedaría asi:
b=a;   

                a     b
                2    5
                5    5  -> se pierde el primer valor

Lo correcto es utilizar una variable auxiliar para no tener el problema de perdida de datos

a =2;
b = 5;        a    b    aux
aux = a;      2    5    2
a = b;        5    2   -> se ha intercambiado correctamente.
b = c;

este proceso se deber realizar por cada vector que se desee intercambiar sus datos y no perder información.

Ejercicio:
Ingresar los códigos de estudiantes con sus respectivas notas y ordenar la información por medio del código para mostrarla en forma clasificada.



ORDENAMIENTO DE VECTORES EN C
#include <stdio.h>
#include <conio.h>

int nom[5];
float nota [5];
int aux_nom;
float aux_nota;
int n,i,j;
char x;
main ()
{
    printf ("PROGRAMA ORDENAMIENTO DE VECTORES\n");
    n=5;
  
    for(i=0; i<n; i++)
    {
  
        printf ("Ingrese codigo de estudiante: ");
        scanf ("%d",&nom[i]);
        printf ("Ingrese nota: ");
        scanf ("%f",&nota[i]);
      
    }
   
     printf ("\n\n VECTORES ORIGINALES \n");
 
    for(i=0; i<n; i++)
    {
        printf ("%d - ",nom[i]);
        printf (" %f  \n",nota[i]);
 
    }
   
    for(i=0; i<n-1; i++)
    {
        for(j=i+1;j<n;j++)
        {                        // si es ascendente se usa >
            if (nom[i]>nom[j])
            {
               aux_nom=nom[i]; // intercambiar nombre
               nom[i]=nom[j];
               nom[j]=aux_nom;
              
               aux_nota=nota[i]; // intercambiar nota
               nota[i]=nota[j];
               nota[j]=aux_nota;
            }
        }
    }
   
    printf ("\n\n VECTORES ORDENANDOS \n");
 
    for(i=0; i<n; i++)
    {
        printf ("%d - ",nom[i]);
        printf (" %f  \n",nota[i]);
 
    }
   
    scanf ("%d",&x);
}



12 comentarios: