public static void Main()
int[] arreglo = { 15, 23, 1, 5, 10, 30, 8, 12, 6, 18, 25, 20, 3, 2, 7 };
Console.WriteLine("Arreglo original:");
ImprimirArreglo(arreglo);
QuickSort(arreglo, 0, arreglo.Length - 1);
Console.WriteLine("\nArreglo ordenado:");
ImprimirArreglo(arreglo);
static void ImprimirArreglo(int[] arreglo)
foreach (var elemento in arreglo)
Console.Write(elemento + " ");
static void QuickSort(int[] arreglo, int izquierda, int derecha)
int indiceParticion = Particionar(arreglo, izquierda, derecha);
QuickSort(arreglo, izquierda, indiceParticion - 1);
QuickSort(arreglo, indiceParticion + 1, derecha);
static int Particionar(int[] arreglo, int izquierda, int derecha)
int pivote = arreglo[derecha];
int indiceMenor = izquierda - 1;
for (int j = izquierda; j < derecha; j++)
if (arreglo[j] <= pivote)
Intercambiar(arreglo, indiceMenor, j);
Intercambiar(arreglo, indiceMenor + 1, derecha);
static void Intercambiar(int[] arreglo, int i, int j)