C sharp - ArreglosSorts

 
Vista:

ArreglosSorts

Publicado por Juan (1 intervención) el 17/10/2010 05:04:05
using System;

namespace Merge
{

public class Clase
{
public Clase()
{
}

public void llenaA(int [] array )
{
Random num = new Random();

for(int ini=0; ini<array.Length; ini++)
{
array[ini]= num.Next(1,99);
Console.WriteLine("POS ["+ini+"] = "+array[ini]);
}
}







public void mergeSort(int [] array, int i,int f)
{
if(i!=f)
{
int m=(i+f)/2;
mergeSort(array,i,m);
mergeSort(array,m+1, f);
mezcla(array,i,m,f);
}
}



public void mezcla(int [] array, int i, int m, int f)
{
int [] aux= new int[m-i+1];
for(int j=i; j<=m; j++)
{
aux[j-i]=array[j];
}

int c1=0, c2=m+1;
for(int j=i; j<=f; j++)
{
if(aux[c1] < array[c2])
{
array[j]=aux[c1++];

if(c1==m-i+1)
{
for(int k=c2; k<=f; k++)
{
array[++j]=array[k];
}
}
}


else
{

array[j]= array[c2++];

if(c2==f+1)
{
for(int k=c1; k<= m-i; k++)
{
array[++j]= aux[k];
}

}
}




}

}



}
}


************************************************************************************************

Main

using System;

namespace Merge
{
class Program
{
public static void Main(string[] args)
{
char opc;
int TAM = new int();

do{

Console.Clear();

Clase c = new Clase();


Console.WriteLine("SIZE: ?");
TAM=int.Parse(Console.ReadLine());


int [] a= new int [TAM];

c.llenaA(a);
Console.WriteLine();
Console.WriteLine();
c.mergeSort(a,0,a.Length);

Console.WriteLine();
Console.WriteLine();
for(int i=0;i<a.Length;i++){
Console.WriteLine("POS"+i+" = "+a[i]);
}


Console.WriteLine("Si Desea Continuar Presione [C] ... ");
opc=char.Parse(Console.ReadLine());

}

while(opc=='c' || opc=='C');
}
}
}



*****************************************************************************************


Quiero hacer un mergeSort pero l sverdad no se ni por donde atacarlo ya e visto diferentes algoritmos pero nadamas no me sale necesito ayuda
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