En Windows FORMS C#
He leído en Internet un comentario, de que esperar a que alguien se le ocurra hacer el método de ordenamiento en Windows Forms C# seria algo como "Morirás esperando una respuesta". La verdad me reí un poco y aprovechando que estoy estudiando dicho tema.Creo, que no morirás esperando, pues aqui te dejo un ejemplo práctico de como mostrar el funcionamiento.
EL DISEÑO es el siguiente
para lo cual se han agregado:
- 2 controles ListBox: uno para números a ordenar listBox1 y otro para ordenados listBox2
- 1 botón para ejecutar el ordenamiento button1
- 1 botón para agregar nuevos números a la lista para ordenar button2
- 1 caja de texto para escribir el nuevo número a agregar textBox1
EL FUNCIONAMIENTO
- El usuario agrega los números al listBox1
- El usuario presiona sobre el botón "Ordenar QUICKSORT"
- El usuario ve en el ListBox2 el resultado de los datos ordenados
EL CÓDIGO
El método de ordenamiento lo obtuve del siguiente LINK
http://csharp-facilito.blogspot.com/2013/07/metodo-de-ordenamiento-quick-sort-en-c-sharp.html
private 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);
}
}
El código del botón que tiene el simbolo "+" es:
private void button2_Click(object sender, EventArgs e)
{
listBox1.Items.Add(textBox1.Text);
}
El código del botón que ORDENA QUICKSORT es:
private void button1_Click(object sender, EventArgs e)
{
int[] datos = new int[100];
for (int i = 0; i < listBox1.Items.Count; i++)
datos[i] = Convert.ToInt32( listBox1.Items[i]);
quicksort(datos, 0, datos.Length - 1);
listBox2.Items.Clear();
for (int i = 0; i < datos.Length; i++)
if (datos[i] != 0)
{
listBox2.Items.Add(datos[i]);
}
}
Sin más, espero les sirva este código.