Adsence

domingo, 29 de abril de 2012

Metodos-de-ordenacion-en-Csharp

Leave a Comment
[caption id="attachment_741" align="aligncenter" width="509"]Metodos de ordenamiento en C# Metodos de ordenamiento en C#[/caption]

Un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida ha de ser una permutación —o reordenamiento— de la entrada que satisfaga la relación de orden dada.



[csharp]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace MetodosOrdenacion
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Metodos de ordenacion";
Console.Write("cuantos numeros desea ingresar: ");
int n = int.Parse(Console.ReadLine());
int []numeros =new int [n];
Console.WriteLine("Ingrese sus {0} numero:",n);
for (int i = 0; i < n;i++)
{
numeros[i]=(int.Parse(Console.ReadLine()));
}

Console.Write(@"Que metodo desea llevar a cabo
1.- insercion
2.- shell
3.- Quick Sort
4.- burbuja (");
int x=int.Parse(Console.ReadLine());
Console.WriteLine("");
switch(x)
{
case 1:
Console.WriteLine("Metodo de insercion directa\n");
int auxili;
int j;
for (int i = 0; i < numeros.Length ; i++)
{
auxili = numeros[i];
j = i - 1;
while (j >= 0 && numeros[j] > auxili)
{
numeros[j + 1] = numeros[j];
j--;
}
numeros[j + 1] = auxili;
}
for (int i = 0; i < numeros.Length; i++)
Console.WriteLine(" " + numeros[i]);
break;
//-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
//-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
case 2:
Console.WriteLine("Metodo de Shell\n");
int salto = 0;
int sw=0;
int auxi = 0;
int e=0;
salto = numeros.Length / 2;
while (salto >0)
{
sw=1;
while (sw!=0)
{
sw=0;
e=1;
while (e < = (numeros.Length - salto))
{
if (numeros [e-1] >numeros [(e-1)+salto ])
{
auxi =numeros [(e-1)+salto ];
numeros [(e-1)+salto ]=numeros [e-1];
numeros [(e-1)]=auxi;
sw=1;
}
e++;
}
}
salto =salto /2;
}
for (int i = 0; i < numeros.Length; i++)
Console.WriteLine(" " + numeros[i]);
break;
//-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
//-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
case 3:
Console.WriteLine("metodo de Quick sorf");
quicksort(numeros, 0, numeros.Length - 1);
for (int i = 0; i < numeros.Length; i++)
{

Console.WriteLine(numeros[i]);
}
break;

//-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
//-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
case 4:
Console.WriteLine("Metodo de la burbuja");
int temp;

for (int i = 0; i < numeros.Length; i++)
{
for (int k = i + 1; k < numeros.Length; k++)
{
if (numeros[i] > numeros[k])
{
temp = numeros[i];
numeros[i] = numeros[k];
numeros[k] = temp;
}
}
}
for (int i = 0; i < numeros.Length; i++)
{
Console.WriteLine(" " + numeros[i]);
}
break;

default:
Console.WriteLine("Opcion no validad\n\nFin del programa");
break;

}

Console.ReadKey();
}

public static void quicksort(int[] vector, int primero, int ultimo)
{
int i, j, central;
double pivote;

central = (primero + ultimo) / 2;
pivote = vector[central];
i = primero;
j = ultimo;

do
{
while (vector[i] < pivote) i++;
while (vector[j] > pivote) j--;

if (i < = j)
{
int temp;
temp = vector[i];
vector[i] = vector[j];
vector[j] = temp;
i++;
j--;

}
} while (i < = j);

if (primero < j)
{
quicksort(vector, primero, j);
}
if (i < ultimo)
{
quicksort(vector, i, ultimo);
}
}
}
}

[/csharp]

0 comentarios :