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
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


0