C/Visual C - Ordenación Comparación de Contadores

 
Vista:

Ordenación Comparación de Contadores

Publicado por Monica (3 intervenciones) el 05/12/2009 17:35:35
Hola a todos, tengo un problemita con un algoritmo de ordenación. Se trata de la ordenación por Comparación de Contadores. Creo que tengo el código bien, pero debo devolver el número de comparaciones que se realizan y no hay forma que me salga bien.
¿Alguién podría indicarme donde estoy fallando?
Gracias

#include <time.h>
#include "metodo2.h"

//void metodo2(int vec[],int n, int *ncomp, int *nmov, float *tiempo, int vecs[])
void metodo2(int vec[],int n, int *ncomp, int *nmov, float *tiempo)
{
int i, j, cont[n], tmp;
clock_t comienzo,final;

comienzo=clock(); //Inicializamos los parametros salida
*ncomp=*nmov=*tiempo=0;

/*Primera parte */
for (i=0;i<n-1;i++) cont[i]=0;

for (i=0;i<n-2;i++)
{
(*ncomp)=(*ncomp)+i;
for(j=i+1;j<n-1;j++)
{
if (vec[j]<vec[i]) cont[i]=cont[i]+1;
else cont[j]=cont[j]+1;
}
}

/*Segunda parte*/
for(i=0;i<n-1;i++)
{
while(i!=cont[i])
{
(*nmov)+=2; //El intercambio del vector cont no se cuenta
j=cont[i];
tmp=vec[j]; vec[j]=vec[i]; vec[i]=tmp;
tmp=cont[j]; cont[j]=cont[i]; cont[i]=tmp;
}
}

final=clock()-comienzo; //Calculamos tiempo de ejecución
*tiempo=(float)final/(float)CLOCKS_PER_SEC;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder