Metodos de Ordenación C#
Metodos de Ordenación C#
Metodos de Ordenación C#
Program
EntradaDatos
namespace AppEtapa4
{
public class EntradaDatos
{
private decimal[] numeros;
private readonly int _cantidad;
return numeros;
}
private bool ValidarNumero(string numero)
{
bool esValido = true;
//cuando el numero sea nulo
if (numero == null)
{
Console.WriteLine("Invalid number format");
return false;
}
return decimal.Parse(strNumero);
}
try //dentro de un bloque try si ocurre algún error, el programa salta al al bloque de código catch para darle
manejo al error
}
catch (Exception ex)//try - catch permite el manejo del error dentro del bloque de código
{
Console.WriteLine(ex.ToString());
}
}
}
catch (Exception exp) { Console.Write(exp.Message); }
}
}
namespace AppEtapa4.Algoritmos
{
public interface IMetodoOrdenamiento //la interfaz proporciona a las clases de ordenamiento heredar el metodo
Ordenar
{
void Ordenar(decimal[] arr);
}
}
Método Burbuja
{
//la clase Bubuja hereda de la superclase IMetodoOrdenamiento el metodo Ordenar
public class Burbuja : IMetodoOrdenamiento//El metodo de la burbuja funciona comparando pares de elementos y
si estan en orden incorrecto intercambian las posiciones
{
public void Ordenar(decimal[] arr)
{
int cantidad = arr.Length;
for (int i = 0; i < cantidad - 1; i++)
{
for (int j = 0; j < cantidad - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
decimal temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
}
Método Selección
namespace AppEtapa4.Algoritmos
{
//la clase Seleccion hereda de IMetodoOrdenamiento el metodo Ordenar
public class Seleccion : IMetodoOrdenamiento //utiliza iteraciones repetidas para encontrar el elemento más
pequeño para intercambiarlos con el primer elementos de la lista.
{
public void Ordenar(decimal[] arr) //metodo publico llamado ordenar con arreglo de decimales como parametro
{
int cantidad = arr.Length; // variable cantidad asignando valor de longitud del arreglo
for (int i = 0; i < cantidad; i++) // bucle for donde inicia con 0
{
int minimo = i;
for (int j = i + 1; j < cantidad; j++)//segundo bucle
{
if (arr[j] < arr[minimo])//se verifica si la posición j es menor que la posición minimo del arreglo. Si es
verdadero se ejecuta el bloque de código dentro del condicional "if".
{
minimo = j; //el valor de minimo se actualiza con j que es el elemento que se considera minimo
decimal temp = arr[minimo];//variable tem
arr[minimo] = arr[i];//se asigna valor al elemento i del arreglo el cual será reemplazado por elemento
en la posición i
arr[i] = temp; // se asigna valor a la variable tem en la posición i el intercambio de valores en las
posiciones minimo e i coloca el numero más pequeño en la posición correcta del array
}
}
}
}
}
}
Método Shell
{
//la clase Shell hereda de IMetodoOrdenamiento el metodo Ordenar
public class Shell : IMetodoOrdenamiento //se caracteriza por dividir la lista original en gran cantidad de sublistas
más pequeñas
{
public void Ordenar(decimal[] arr)
{
int cantidad = arr.Length;
arr[j] = temp;
gap /= 2;
}
}
}
Método Inserción
{
//la clase Insercion hereda de IMetodoOrdenamiento el metodo Ordenar
public class Insecion : IMetodoOrdenamiento //Insercion funciona insertando cada numero en su posición correcta
previa comparación con los demás numeros
{
public void Ordenar(decimal[] arr)
{
int cantidad = arr.Length;
// Iterar sobre todos los elementos del arreglo
for (int i = 1; i < cantidad; i++)
{
decimal key = arr[i];
int j = i - 1;
// Mover los elementos mayores que key a una posición adelante de su posición actual
while (j >= 0 && arr[j] > key)
{
arr[j + 1] = arr[j];
j--;
}
}
}
}
}