none
Ayuda con el metodo burbuja RRS feed

  • Pregunta

  • Como puedo obtener el numero de intercambios y comparacion en un ordenamiento burbuja

                

    int[] datos = new int[5];

            private void btnOrden_Click(object sender, EventArgs e)
            {

                datos[0] = Convert.ToInt16(this.txt0.Text);
                datos[1] = Convert.ToInt16(this.txt1.Text);
                datos[2] = Convert.ToInt16(this.txt2.Text);
                datos[3] = Convert.ToInt16(this.txt3.Text);
                datos[4] = Convert.ToInt16(this.txt4.Text);

                int can = datos.Count(); // Cantidad de locaciones

                for(int i = 0; i < can; i++)
                {
                    for(int j = i + 1; j < can; j++)
                    {
                        if (datos[i] > datos[j])
                        {
                            int tem = datos[i];
                            datos[i] = datos[j];
                            datos[j] = tem;
                        }
                    }
                }
                LlenarListBox();
            }
            private void LlenarListBox()
            {
                int can = datos.Count();
                this.lstBurbuja.Items.Clear();

                for (int x = 0; x < can; x++)
                {
                    this.lstBurbuja.Items.Add(datos[x]);
                   // this.lstBurbuja.Items.Add(datos[num]);             
                }
            }

            private void btnRandom_Click(object sender, EventArgs e)
            {

                Random num = new Random();

                this.txt0.Text = Convert.ToString(num.Next(10));
                this.txt1.Text = Convert.ToString(num.Next(10));
                this.txt2.Text = Convert.ToString(num.Next(10));
                this.txt3.Text = Convert.ToString(num.Next(10));
                this.txt4.Text = Convert.ToString(num.Next(10));

                int can = datos.Count(); // Cantidad de locaciones

                for (int i = 0; i < can; i++)
                {
                    for (int j = i + 1; j < can; j++)
                    {
                        if (datos[i] > datos[j])
                        {
                            int tem = datos[i];
                            datos[i] = datos[j];
                            datos[j] = tem;
                        }
                    }
                }
                LlenarListBox();      
            }


    • Editado ProgramadorAECF jueves, 27 de octubre de 2016 14:51 mejor explicado
    jueves, 27 de octubre de 2016 14:46

Todas las respuestas

  • Hola,

    Pon un contador.

    int[] datos = new int[5];
    int intercambio=0;
    
            private void btnOrden_Click(object sender, EventArgs e)
            {
    
                datos[0] = Convert.ToInt16(this.txt0.Text);
                datos[1] = Convert.ToInt16(this.txt1.Text);
                datos[2] = Convert.ToInt16(this.txt2.Text);
                datos[3] = Convert.ToInt16(this.txt3.Text);
                datos[4] = Convert.ToInt16(this.txt4.Text);
    
                int can = datos.Count(); // Cantidad de locaciones
    
                for(int i = 0; i < can; i++)
                {
                    for(int j = i + 1; j < can; j++)
                    {
                        if (datos[i] > datos[j])
                        {
                            int tem = datos[i];
                            datos[i] = datos[j];
                            datos[j] = tem;
                            intercambio++;
                        }
                    }
                }
                LlenarListBox();
            }


    Es de buena educación dar las gracias cuando te ayudan, si alguna respuesta te ha sido de utilidad agradécelo marcandola como útil.
    Blog

    jueves, 27 de octubre de 2016 14:57
  • Muchas gracias, pero como haria para contar usando la variable :/
    jueves, 27 de octubre de 2016 15:01
  • Perdona, pero no entiendo la pregunta.

    int intercambio=0;

    Es una variable de clase que esta disponible en todos los metodos de la clase.

    intercambio++;

    incrementa en uno la variable intercambio.


    Es de buena educación dar las gracias cuando te ayudan, si alguna respuesta te ha sido de utilidad agradécelo marcandola como útil.
    Blog

    jueves, 27 de octubre de 2016 15:04
  • Muchas gracias pero no ocupe una variable

    this.lstIntercambios.Items.Add(datos[j] + "con" + datos[i]);

    jueves, 27 de octubre de 2016 15:09