Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: CrÄsH en 20 Marzo 2009, 16:34 pm



Título: [SOLUCIONADO] duda algoritmo ordenacion c#
Publicado por: CrÄsH en 20 Marzo 2009, 16:34 pm
Buenas, en este algoritmo de ordenacion, donde o como pondriais un contador para saber el numero de comparaciones que hace hasta k este ordenado.


Código:
            int i, j, posPetit = 0;

            for (i = 0; i < t.Length - 1; i++)
            {
                posPetit = i;
                for (j = i + 1; j < t.Length; j++)
                {
                    if (t[posPetit] > t[j])
                        posPetit = j;

                }
                if (t[posPetit] != t[i])
                {
                    Intercanvi(ref t[i], ref t[posPetit]);
                   
                }

            }

La ordenacion no importa lo unico k importe es saber el numero de comparaciones k hace.Y el contador no va en ninguno de los 2 if.

Gracias


Título: Re: duda algoritmo ordenacion c#
Publicado por: CrÄsH en 23 Marzo 2009, 17:15 pm
alguna idea?¿


Título: Re: duda algoritmo ordenacion c#
Publicado por: Hadess_inf en 23 Marzo 2009, 18:32 pm
deberia ir en el segudo for.
Saludos


Título: Re: duda algoritmo ordenacion c#
Publicado por: CrÄsH en 23 Marzo 2009, 22:33 pm
deberia ir en el segudo for.
Saludos

no va en el segundo for, ya k si ordenamos un vector de 100 posiciones ya ordenado salen las mismas iteraciones que uno desordenado.
En cual deberia de ir??


Título: Re: duda algoritmo ordenacion c#
Publicado por: Choclito en 26 Marzo 2009, 23:14 pm
ahi te dejo una idea ojala que te sirva(nota:echo en block de notas no compilado).

Código:
int n;
int i,j;
int c=0,aux,k=0;
int l=0;
Console.Write("Ingrese N:");
n=int.Parse(Console.ReadLine());
int[]Array=new int[N];
for(i=0;i<Array.Length;i++)
{
  Array[i]=int.Parse(Console.ReadLine());
}
//Ordenamos
for(i=1;i<Array.Length;i++)
{
  for(j=Array.Length-1;j>=i;j--)
    {
      c++;
     if(Array[j-1]>Array[j])//si se cumple enta ah  Intercambiar
      {
    aux=Array[j-1];
    Array[j-1]=Array[j];
    Array[j]=aux;    
    k=1;
    l=l+1;
       }
    }
  if(k==0)
break;//Fin del Recorrido Porque el Array ya Esta Ordenado
}
Console.WriteLine("El Total de Comparaciones que Hizo fue de:"+c);
Console.WriteLine("El Total de Intercambios que Hizo fue de:"+l);
Console.Read();


Título: Re: duda algoritmo ordenacion c#
Publicado por: CrÄsH en 27 Marzo 2009, 00:50 am
gracias Choclito!! ya lo solucione.