27 de octubre de 2010

Metodos de Ordenamiento (Parte 3)


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 );
}



Espero el codigo sea de utilidad, voy a estar subiendo entra manana y pasado el codigo a 4share para la descarga, cualquier otra inquietud no duden en preguntar, remienden la pag. 

No hay comentarios.:

Publicar un comentario