publico mi tarea de ordenamiento con menu que me tomo un tiempo::: si lo mejorarian estaria ok.
ojala que les sirva:
********codigo***********
using System;
//using System.Collections.Generic; uso en 2005
using System.Text;
namespace menus_ex
{
class Program
{
static void asburbuja(int []le,int t)//burbuja ascendente
{int temp, nb = 0;
for (int i = 0; i < t; i++)
{for (int j = i; j < t; j++)
{nb++;
if (le > le[j])
{temp = le;
le = le[j];
le[j] = temp;
}
}
}
}
static void desburbuja(int []le,int t)//burbuja descendente
{int temp, nb = 0;
for (int i = 0; i < t; i++)
{for (int j = i; j < t; j++)
{nb++;
if (le < le[j])
{temp = le;
le = le[j];
le[j] = temp;
}
}
}
}
static void selecionas(int []le,int t)//selecion ascendente
{int menor;
for (int i = 0; i < t; i++)
{ menor = i;
for (int j = i + 1; j < t; j++)
if (le[j] < le[menor])
menor = j;
int auxi = le;
le = le[menor];
le[menor] = auxi;
}
}
static void seleciondes(int []le,int t)//selecion descendente
{int menor;
for (int i = 0; i < t; i++)
{ menor = i;
for (int j = i + 1; j < t; j++)
if (le[j] > le[menor])
menor = j;
int auxi = le;
le = le[menor];
le[menor] = auxi;
}
}
static void insercionas(int []le,int t)//intersecion ascendente
{int w, ij, auxis;
bool encontradositio;
for (w = 1; w < t; w++)
{ auxis = le[w];
ij = w - 1;
encontradositio = false;
while (ij >= 0 && !encontradositio)
if (le[ij] > auxis)
{ le[ij + 1] = le[ij];
ij--;
}
else
encontradositio = true;
le[ij + 1] = auxis;
}
}
static void inserciondes(int []le,int t) //intersecion descendente
{ int w, ij, auxis;
bool encontradositio;
for (w = 1; w < t; w++)
{ auxis = le[w];
ij = w - 1;
encontradositio = false;
while (ij >= 0 && !encontradositio)
if (le[ij] < auxis)
{ le[ij + 1] = le[ij];
ij--;
}
else
encontradositio = true;
le[ij + 1] = auxis;
}
}
static void shell(int []le,int t) //shell ascendente
{ int il, jl, kl, salto;
salto = t / 2;
while (salto > 0)
{ for (il = salto; il < t; il++)
{ jl = il - salto;
while (jl >= 0)
{ kl = jl + salto;
if (le[jl] <= le[kl])
jl = -1;
else
{ int auvi = le[jl];
le[jl] = le[kl];
le[kl] = auvi;
jl -= salto;
}
}
}
salto /= 2;
}
}
static void shell1(int []le,int t) //shell descendente
{ int il, jl, kl, salto;
salto = t / 2;
while (salto > 0)
{ for (il = salto; il < t; il++)
{ jl = il - salto;
while (jl >= 0)
{ kl = jl + salto;
if (le[jl] >= le[kl])
jl = -1;
else
{ int auvi = le[jl];
le[jl] = le[kl];
le[kl] = auvi;
jl -= salto;
}
}
}
salto /= 2;
}
}
public static void quicksort(int[] le, int iz, int de) //quickshort ascendente
{
int i = iz;
int j = de;
int pivote = le[(iz + de) / 2];
do
{
while (le < pivote)
{
i++;
}
while (le[j] > pivote)
{ j--; }
if (i <= j)
{
int auxi = le;
le = le[j];
le[j] = auxi;
i++;
j--;
}
} while (i <= j);
if (j > iz)
quicksort(le, iz, j);
if (i < de)
quicksort(le, i, de);
}
public static void quicksort2(int[] le, int iz1, int de1) //quickshort descendente
{
int i = iz1;
int j = de1;
int pivote = le[(iz1 + de1) / 2];
do
{
while (le > pivote)
{
i++;
}
while (le[j] < pivote)
{ j--; }
if (i <= j)
{
int auxi = le;
le = le[j];
le[j] = auxi;
i++;
j--;
}
} while (i <= j);
if (j > iz1)
quicksort2(le, iz1, j);
if (i < de1)
quicksort2(le, i, de1);
}
static void recorrer(int[] le,int t)
{
for (int i = 0; i < t; i++)
Console.Write(le + " ");
Console.WriteLine();
}
static void Main(string[] args)
{ int t;
Console.WriteLine("--------- MENU ARRAYS---------");
Console.WriteLine("********llenado******** ");
Console.WriteLine("ingrese tamaño");
t = int.Parse(Console.ReadLine());
int[] le = new int[t];
for (int i = 0; i < t; i++)
{
Console.WriteLine("ingrese [{0}] valor", i + 1);
le = int.Parse(Console.ReadLine());
}
Console.WriteLine("--------- MENU ---------");
Console.WriteLine("1. burbuja");
Console.WriteLine("2. seleccion");
Console.WriteLine("3. insercion");
Console.WriteLine("4. shell");
Console.WriteLine("5. quicksort");
int a = int.Parse(Console.ReadLine());
switch (a)
{
case 1:
{ Console.WriteLine("ascendente o descendente [a/d] ");
string r=Console.ReadLine();
if (r == "a")
{ asburbuja(le,t);
recorrer(le,t);
}
if (r == "d")
{ desburbuja(le, t);
recorrer(le, t);
}
break;
}
case 2:
{
Console.WriteLine("ascendente o descendente [a/d] ");
string r = Console.ReadLine();
if (r == "a")
{ selecionas(le, t);
recorrer(le, t);
}
if (r == "d")
{ seleciondes(le, t);
recorrer(le, t);
}
break;
}
case 3:
{
Console.WriteLine("ascendente o descendente [a/d] ");
string r = Console.ReadLine();
if (r == "a")
{ insercionas(le, t);
recorrer(le, t);
}
if (r == "d")
{ inserciondes(le, t);
recorrer(le, t);
}
break;
}
case 4:
{
Console.WriteLine("ascendente o descendente [a/d] ");
string r = Console.ReadLine();
if (r == "a")
{ shell(le, t);
recorrer(le, t);
}
if (r == "d")
{ shell1(le, t);
recorrer(le, t);
}
break;
}
case 5:
{
Console.WriteLine("ascendente o descendente [a/d] ");
string r = Console.ReadLine();
if (r == "a")
{
quicksort(le, 0, le.Length - 1);
recorrer(le, t);
}
if (r == "d")
{ quicksort2(le, 0, le.Length - 1);
recorrer(le, t);
}
break;
}
}
//fin Main
}
}
}