27 de octubre de 2010

Metodos de Ordenamiento (Parte 2)



int burbuja1(int X[Max], int dimX)//Burbuja 1 (de derecha a Izquierda)
{
   int N,i,aux,j;
   int comienzo;
   comienzo=clock();
   N=dimX;
   for(i=1;i<N;){
      for(j=N-1;j>0;){
         if(X[j-1]>X[j]){
            aux=X[j-1];
            X[j-1]=X[j];
            X[j]=aux;
         }
         j=j-1;
      }
      i=i+1;
   }
   printf( "\n\nNumero de segundos transcurridos desde el comienzo del programa: %f s\n", (clock()-comienzo)/(double)CLOCKS_PER_SEC );
}
//-->2    

int burbuja2(int X[Max], int dimX)//Burbuja 2 (de izquierda a derecha)
{
   int N,i,aux,j;
   int comienzo;
   comienzo=clock();
   N=dimX;
   for(i=1;i<N;){
      for(j=0;j<N-1;){
         if(X[j]>X[j+1]){
            aux=X[j];
            X[j]=X[j+1];
            X[j+1]=aux;
         }
         j=j+1;
      }
      i=i+1;
   }
   printf( "\n\nNumero de segundos transcurridos desde el comienzo del programa: %f s\n", (clock()-comienzo)/(double)CLOCKS_PER_SEC );
}

//-->3  

int burbujaConSenal(int X[Max], int dimX)//Burbuja con SEÑAL  
{
   int i,j,aux,n,comienzo;
   bool band;
   i=1,band=false;
   n=dimX;
   comienzo=clock();
   do{
      band=true;
      for(j=1;j<=n-1;){
         if(X[j]>X[j+1]){
            aux=X[j];
            X[j]=X[j+1];
            X[j+1]=aux;
            band=false;
         }
         j=j+1;
      }
   }
   while(i<=n-1 && band==false);
   printf( "\n\nNumero de segundos transcurridos desde el comienzo del programa: %f s\n", (clock()-comienzo)/(double)CLOCKS_PER_SEC );
}

//-->4

int sacudida(int X[Max], int dimx)
{
   int N,i,aux,j,k,comienzo;
   int IZQ,DER;
   bool BAND;
   comienzo=clock();
   N=dimx;
   IZQ=1;
   DER=N-1;
   k=N-1;
   while(IZQ<=DER){
      for(i=0;i<N-1;){
         for(j=DER;j>=IZQ;){
            if(X[j-1]>X[j]){
               aux=X[j-1];
               X[j-1]=X[j];
               X[j]=aux;
               k=i;
            }
            j=j-1;
         }
         i=i+1;
      }
  
      IZQ=k+1;
  
      for(i=0;i<N-1;){
         for(j=IZQ;j>=DER;){
            if(X[j-1]>X[j]){
               aux=X[j-1];
               X[j-1]=X[j];
               X[j]=aux;
               k=i;
            }
            j=j-1;
         }
         i=i+1;
      }
      DER=k-1;
   }
   printf( "\n\nNumero de segundos transcurridos desde el comienzo del programa: %f s\n", (clock()-comienzo)/(double)CLOCKS_PER_SEC );
}

//-->6

int ordenxinserdirec(int X[Max],int dimX)
{
   int i,k,aux,val,comienzo;
   comienzo=clock();
   for(i=1;i<=dimX;i++){
      aux=X[i];
      k=i-1;
      while(k>=0&&aux<X[k]){
         val=X[k+1];
         X[k+1]=X[k];
         X[k]=X[k+1];
         k=k-1;
      }
      X[k+1]=aux;
   }
   printf( "\n\nNumero de segundos transcurridos desde el comienzo del programa: %f s\n", (clock()-comienzo)/(double)CLOCKS_PER_SEC );
}

No hay comentarios.:

Publicar un comentario