martes, 9 de noviembre de 2010

Metodos de ordenamiento

PROGRAMA QUE CAPTURA VALORES NUMERICOS DE UNA MATRIZ DE 4X4 Y CALCULA LA SUMA Y EL PROMEDIO DE ESTA DE LA DIAGONAL PRINCIPAL DE LA MATRIZ.

#include<conio.h>
#include<iostream.h>

void main()
{
clrscr();
int i,j,k,l;
int a[4][4];
float prom,prom1;
cout<<"Introduze tus valores:\n"<<endl;
for(i=0;i<4;i++){
   for(j=0;j<4;j++){
      cin>>a[i][j];
}
}
cout <<"\nLos valores de la matriz son: \n "<<endl;
for(i=0;i<4;i++){
   for(j=0;j<4;j++){

cout<<a[i][j]<<" ";
}
cout<<"  \n "<<endl;
}
for(i=0;i<4;i++){
   for(j=0;j<4;j++){
if(i==j)

prom=prom+a[i][j];


}

}
prom1=prom/4;
cout<<"LA SUMA DE LA DIAGONAL ES : "<<prom<<endl;
cout<<"EL PROMEDIO DIAGONAL ES : "<<prom1<<endl;
getch();
}

Metodos de ordenamiento

PROGRAMA QUE CAPTURA VALORES NUMERICOS EN UNA MATRIZ DE 3X3 Y LOS ORDENA DE MANERA ASCENDENTE.MOSTRANDO LA MATRIZ DESORDENADA Y ORDENADA.

#include<conio.h>
#include<iostream.h>

void main()
{
clrscr();
int i,j,k,l;
int a[3][3];
int aux;
cout<<"Introduze tus valores:\n"<<endl;
for(i=0;i<3;i++){
   for(j=0;j<3;j++){
      cin>>a[i][j];
}
}
cout <<"\nLos valores desordenados son: \n "<<endl;
for(i=0;i<3;i++){
   for(j=0;j<3;j++){

cout<<a[i][j]<<" ";//impresion de la matriz desordenada
}
cout<<"  \n "<<endl;
}

for(i=0;i<3;i++){//ordenamiento de la matriz por metodo de burbuja
      for(j=0;j<3;j++){    
if(a[i][j]>a[i][j+1])
{
aux=a[i][j];
  a[i][j]=a[i][j+1];
    a[i][j+1]=aux;
for(k=0;k<3;k++){
           for(l=0;l<3;l++){
if(a[k][l+2]>a[k+1][l])
{
aux=a[k][l+2];
  a[k][l+2]=a[k+1][l];
    a[k+1][l]=aux;     
}
}
}
}
}
}

cout <<"Los valores ordenados de manera ascendente son: \n "<<endl;
  for(i=0;i<3;i++){
    for(j=0;j<3;j++){
     cout<<a[i][j]<<" ";
}
cout<<" \n "<<endl;
}
getch();
}

Metodos de ordenamiento (INSERCIÓN)

METODO DE INSERCIÓN


El ordenamiento por inserción (insertion sort en inglés) es una manera muy natural de ordenar para un ser humano, y puede usarse fácilmente para ordenar un mazo de cartas numeradas en forma arbitraria. Requiere O(n²) operaciones para ordenar una lista de n elementos.
Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, deteniéndose cuando se encuentra un elemento menor (todos los elementos mayores han sido desplazados una posición a la derecha). En este punto se inserta el elemento k+1 debiendo desplazarse los demás elementos.


PROGRAMA QUE CAPTURA 5 NOMBRES Y EL PROMEDIO DE 3 CALIFICACIONES Y LOS ORDENA DE MANERA ASCENDENTE Y DESCENDENTE CON EL METODO DE LA INSERCIÓN.


#include<conio.h>
#include<iostream.h>
#include<string.h>

void main()
{
clrscr();
char nombre[5][10];
int cal[5][3];
int suma;
float prom[5];
int i,j,k;
int aux;
char nombreaux[10];

   for(i=0;i<5;i++){
      suma=0;
     cout<<"Introduze el nombre:"<<endl;
       cin>>nombre[i];
   
   for(j=0;j<3;j++){
    
         cout<<"calificacion"<<endl;
              cin>>cal[i][j];
       
       suma=suma+cal[i][j];
       }
       prom[i]=suma/3;
}

for(i=1;i<5;i++) //metodo de inserción
{
 
  aux=prom[i];
  strcpy(nombreaux,nombre[i]);
  for(j=i-1;j>=0;j--)
  {                  
    if(aux>prom[j]) 
    {
      prom[j+1]=aux;
strcpy(nombre[j+1],nombreaux);

      break;         
    }
    else             
      prom[j+1]=prom[j];
strcpy(nombre[j+1],nombre[j]);
  }
  if(j==-1)    
    prom[0]=aux;
strcpy(nombre[0],nombreaux);
}


cout << "Las promedios ordenados de manera descendente son: \n"<<endl;
  for(i=4;i>=0;i--){
    cout<<nombre[i]<<" : "<<prom[i]<<endl;
}
getch();
}

Metodos de ordenamiento (SELECCION)

METODO DE SELECCION


El ordenamiento por selección (Selection Sort en inglés) es un algoritmo de ordenamiento que requiere O(n2) operaciones para ordenar una lista de n elementos.
Su funcionamiento es el siguiente:
    * Buscar el mínimo elemento de la lista
    * Intercambiarlo con el primero
    * Buscar el mínimo en el resto de la lista
    * Intercambiarlo con el segundo
Y en general:
    * Buscar el mínimo elemento entre una posición i y el final de la lista
    * Intercambiar el mínimo con el elemento de la posición i

PROGRAMA QUE ORDENA 5 NOMBRES Y EL PROMEDIO DE 3 CALIFICACIONES CON EL METODO DE SELECCION DE MANERA ASCENDENTE Y DESCENDENTE


#include<conio.h>
#include<iostream.h>
#include<string.h>

void main()
{
clrscr();
char nombre[5][10];
int cal[5][3];
int suma;
float prom[5];
int i,j;
int aux,menor;
char nombreaux[10];

   for(i=0;i<5;i++){
      suma=0;
     cout<<"Introduze el nombre:"<<endl;
       cin>>nombre[i];
   
   for(j=0;j<3;j++){
    
         cout<<"calificacion"<<endl;
              cin>>cal[i][j];
       
       suma=suma+cal[i][j];
       }
       prom[i]=suma/3;
}
for(i=0;i<5-1;i++)
{
  for(j=i+1,menor=i;j<5;j++)//metodo de seleccion
   if(prom[j]<prom[menor]) {
    menor=j;
     aux=prom[i];
     prom[i]=prom[menor];
     prom[menor]=aux;
     strcpy(nombreaux,nombre[i]);
     strcpy(nombre[i],nombre[menor]);
     strcpy(nombre[menor],nombreaux);

}
}

clrscr();
cout << "Las promedios ordenados de manera descendente son: \n"<<endl;
  for(i=4;i>=0;i--){
    cout<<nombre[i]<<" : "<<prom[i]<<endl;
}
getch();
}

Metodos de ordenamiento (BURBUJA)

METODO DE LA BURBUJA


El Ordenamiento de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas "burbujas". También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de implementar.

PROGRAMA QUE CAPTURA 5 NOMBRES Y CALCULA EL PROMEDIO DE 3 CALIFICACIONES Y LOS ORDENA POR NOMBRE DE MANERA ASCENDENTE Y DESCNDENTE.


#include<conio.h>
#include<iostream.h>
#include<string.h>

void main()
{
clrscr();
char nombre[5][10];
int cal[5][3];
int suma;
float prom[5];
int i,j,k;
int aux;
char nombreaux[10];

   for(i=0;i<5;i++){
      suma=0;
     cout<<"Introduze el nombre:"<<endl;
       cin>>nombre[i];
   
   for(j=0;j<3;j++){
    
         cout<<"calificacion"<<endl;
              cin>>cal[i][j];
       
       suma=suma+cal[i][j];
       }
       prom[i]=suma/3;
}
for(i=0;i<4;i++){
      for(j=0;j<4;j++){
if(prom[j]>prom[j+1])
{
aux=prom[j];
prom[j]=prom[j+1];
prom[j+1]=aux;
strcpy(nombreaux,nombre[j]);//ordenamiento por metodo de la burbuja
strcpy(nombre[j],nombre[j+1]);
strcpy(nombre[j+1],nombreaux);
}
}
}
cout <<"Los promedios ordenados de manera ascendente son: \n"<<endl;
  for(i=0;i<5;i++){
    cout<<nombre[i]<<" : "<<prom[i]<<endl;
}
cout << "Las promedios ordenados de manera descendente son: \n"<<endl;
  for(i=4;i>=0;i--){
    cout<<nombre[i]<<" : "<<prom[i]<<endl;
}
getch();
}



Metodos de ordenamiento

Su finalidad es organizar ciertos datos (normalmente arrays o ficheros) en un orden creciente o decreciente mediante una regla prefijada (numérica, alfabética...). Atendiendo al tipo de elemento que se quiera ordenar.

PROGRAMA QUE ORDENA 10 VALORES DE FORMA ASCENDENTE Y DESCENDENTE


#include <conio.h>
#include <stdio.h>
#include <iostream.h>

void main()
{
clrscr();
int n,i,j,A[10],aux;


for(i=1;i<=10;i++)//llenado de el vector
{
cout<<"Vector Numero "<<i<<" :";
cin>>A[i];
}

for(i=1;i<=10-1;i++)//realiza la ordenacion
{                   //con el metodo de la burbuja
for(j=1;j<=10-1;j++)
{
if(A[j]>A[j+1])
{
aux=A[j];
A[j]=A[j+1];
A[j+1]=aux;
}
}
}
//impresion de los valores ordenados
cout << "los valores ordenados de manera ascendente: ";
for(i=1;i<=10;i++)
{
cout<<","<<A[i];
}
cout << "los valores ordenados de manera decendente: ";
for(i=10;i>=1;i--)
{
cout<<","<<A[i];
}
getch();
}