Francisco Aldana Hernández

Francisco Aldana Hernández
Sistemas Computacionales

lunes, 1 de noviembre de 2010

Programa para ordenar N numeros de un arreglo de N -- Varios Metodos ---- Aporte

#include <stdio.h>
int Cantidad, opcion, i, Vector[100], j, k, Aux, intb, l, Mayor, Posmayor, Volver, Central;
/*SUBRUTINA DE QUICK SORT*/
void partir(int primero,int ultimo)
{i=primero;
 j=ultimo;
 Central= Vector[(primero+ultimo)/2];
 while (i<=j)
 {while (Vector[i]<Central)
  {i=i+1;}
  while (Vector[j]>Central)
  {j=j-1;}
  if (i<=j)
  {printf("\n\nCambiando...  Vector[%d]=%d  por  Vector[%d]=%d\n",j,Vector[j],i,Vector[i]);
   Aux=Vector[i];
   Vector[i]=Vector[j];
   Vector[j]=Aux;
   for(k=1;k<=Cantidad;k++)
   {printf("\t%d",Vector[k]);}
   i=i+1;
   j=j-1;
  }              
 }
 if(primero<j)
 {partir(primero,j);}
 if(i<ultimo)
 {partir(i,ultimo);}
}


/*METODO QUICK SORT*/
void Quick_Sort()
{printf("\n\n\tCuantos numeros seran introducidos:  ");
 scanf("%d",&Cantidad);
 printf("\n");
 for(i=1;i<=Cantidad;i++)
 {printf("\tVector[%d]=",i);
  scanf("%d",&Vector[i]);
 }
 partir(1,Cantidad);  
 printf("\n\n\t\tVECTOR ORDENADO\n");
 for(i=1;i<=Cantidad;i++)              
 {printf("\t%d",Vector[i]);}
}

                
/*METODO DE SHELL*/
void Shell()
{printf("\n\n\tCuantos numeros seran introducidos:  ");
 scanf("%d",&Cantidad);
 printf("\n");
 for(i=1;i<=Cantidad;i++)
 {printf("\tVector[%d]=",i);
  scanf("%d",&Vector[i]);
 }
 intb = Cantidad / 2;
 while(intb>0)
 {for(i=intb+1;i<=Cantidad;i++)
  {j = i - intb;
   while(j>0)
   {k = j + intb;
    if(Vector[j]<Vector[k])
    {j=0;}
    else
    {printf("\n\n\tCambiando...  Vector[%d]=%d  por  Vector[%d]=%d\n",j,Vector[j],k,Vector[k]);
     Aux = Vector[j];
     Vector[j] = Vector[k];
     Vector[k] = Aux;
     for(l=1;l<=Cantidad;l++)
     {printf("\t%d",Vector[l]);}
    }
    j = j - intb;
   }
  }
  intb = intb / 2;
 }
 printf("\n\n\t\tVECTOR ORDENADO\n");
 for(i=1;i<=Cantidad;i++)              
 {printf("\t%d",Vector[i]);}
}


/*METODO DE SELECCION*/
void Seleccion()
{printf("\n\n\tCuantos numeros seran introducidos:  ");
 scanf("%d",&Cantidad);
 printf("\n");
 for(i=1;i<=Cantidad;i++)
 {printf("\tVector[%d]=",i);
  scanf("%d",&Vector[i]);
 }
 for(i=1;i<=Cantidad-1;i++)
 {Mayor=Vector[i];
  Posmayor=i;
  for(j=i+1;j<=Cantidad;j++)
  {if(Vector[j]<Mayor)     
   {Mayor=Vector[j];
    Posmayor=j;
   }
  }
  printf("\n\n\tCambiando...  Vector[%d]=%d  por  Vector[%d]=%d\n",i,Vector[i],Posmayor,Vector[Posmayor]);
  Aux=Vector[i];
  Vector[i]=Vector[Posmayor];
  Vector[Posmayor]=Aux;
  for(l=1;l<=Cantidad;l++)
  {printf("\t%d",Vector[l]);}
 }  
 printf("\n\n\t\tVECTOR ORDENADO\n");
 for(i=1;i<=Cantidad;i++)              
 {printf("\t%d",Vector[i]);}
}


/*METODO DE BURBUJA*/
void Burbuja()
{printf("\n\n\tCuantos numeros seran introducidos:  ");
 scanf("%d",&Cantidad);
 printf("\n");
 for(i=1;i<=Cantidad;i++)
 {printf("\tVector[%d]=",i);
  scanf("%d",&Vector[i]);
 }
 for(i=1;i<=Cantidad-1;i++)
 {for(j=1;j<=Cantidad-1;j++)
  {if(Vector[j+1]<Vector[j])
   {printf("\n\n\tCambiando...  Vector[%d]=%d  por  Vector[%d]=%d\n",j+1,Vector[j+1],j,Vector[j]);
    Aux=Vector[j+1];
    Vector[j+1]=Vector[j];
    Vector[j]=Aux;
    for(k=1;k<=Cantidad;k++)
    {printf("\t%d",Vector[k]);}
   }
  }
 }
 printf("\n\n\t\tVECTOR ORDENADO\n");
 for(i=1;i<=Cantidad;i++)
 {printf("\t%d",Vector[i]);}
}


/*PROGRAMA PRINCIPAL*/
void main()
{do
 {printf("\n\n\n\n\n\n\t\t\t\t\tMETODOS DE ORDENAMIENTO");
  printf("\n\n\t\t\t\t1. BURBUJA");
  printf("\n\t\t\t\t2. SELECCION");
  printf("\n\t\t\t\t3. SHELL");
  printf("\n\t\t\t\t4. QUICK SORT");
  printf("\n\t\t\t\t5. SALIDA");
  printf("\n\n\t\t\t\tESCOJA UNA DE LAS OPCIONES [1-5]:  ");
  scanf("%d", &opcion);
  switch(opcion)
  {case 1:{Burbuja();
           Volver=1;
           break;
          }
   case 2:{Seleccion();
           Volver=1;
           break;
          }
   case 3:{Shell();
           Volver=1;
           break;
          }
   case 4:{Quick_Sort();
           Volver=1;
           break;
          }
   case 5:{Volver=0;
           break;
          }
  }
 }while(Volver);
}

1 comentario:

  1. Amigo estan muy buenos tus programas me gusta mucho tu blog sobre programacion... pero aqui te tengo esto a ver si me ayudas: me piden que ordene 10 numeros de menor a mayor sin usar arreglos... empeze a hacerlos pero me he vuelto un desastre, mira aqui como iba:

    http://es.answers.yahoo.com/question/index?qid=20110521132251AAgk3M8

    ResponderEliminar