Search code examples
c#visual-studio-2010bubble-sort

Bubblesort int returning only 0's


so im having this homework assignment (the only reason why one would do bubblesort )

Using visual studio i made 2 arrays one in witch the unsorted numbers are and a second where the numbers are sorted.

My code as i will paste it here, will just return 0's in both arrays and i have no idea what im doing wrong so please help me out !

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {


        public Form1()
        {
            InitializeComponent();
        }

        private void btnBubbleSort_Click(object sender, EventArgs e)
        {
            int[] numbers = new int[100];
            foreach (int value in numbers)
            {
                lstBubbleUnorderd.Items.Add(value);

            }

            for (int y = 0; y < 100; y++)
            {
                for (int i = 100 - 1; i > y; --i)
                {
                    if (numbers[i] <= numbers[i - 1])
                    {
                        int temp = numbers[i];
                        numbers[i] = numbers[i - 1];
                        numbers[i - 1] = temp;
                    }
                }
            }
            for (int j = 0; j < 100; j++)
            {
                lstBubbleOrderd.Items.Add(numbers[j]);

            }
        }
    }
}

===========================================================================================

My code is now working thanks to you guy's

My new code is as follows :

namespace WindowsFormsApplication5 { public partial class Form1 : Form {

    public Form1()
    {
        InitializeComponent();


    }

    private void btnBubbleSort_Click(object sender, EventArgs e)
    {
        lstBubbleOrderd.Items.Clear();
        lstBubbleUnorderd.Items.Clear();

        Random RndNmbrs = new Random();
        int n = RndNmbrs.Next();
        for (int a = 0; a < 10; a++)

        lstBubbleUnorderd.Items.Add(RndNmbrs.Next(0, 10));
        int[] numbers = new int[lstBubbleUnorderd.Items.Count];
        for (int i = 0; i < numbers.Length; i++)
        {
            numbers[i] = int.Parse(lstBubbleUnorderd.Items[i].ToString());
        }



        for (int y = 0; y < numbers.Length; y++)

        {           

            for (int i = numbers.Length - 1; i > y; --i)
            {
                if (numbers[i] <= numbers[i - 1])
        {
                int temp = numbers[i];
                numbers[i] = numbers[i - 1];
                numbers[i - 1] = temp;
    }
}


                for (int j = 0; j < numbers.Length; j++)
            {
                lstBubbleOrderd.Items.Add(numbers[j]);
            }

        }

    private void button1_Click(object sender, EventArgs e)
    {

    }
    }
}

Solution

  • You created your array of numbers here:

    int[] numbers = new int[100];
    

    But you never populated it with anything, so all of its values are initialized to zero.

    Perhaps what you meant to do was something like this (incorporating suggestions from leemo's answer)?

    int[] numbers = new int[lstBubbleUnorderd.Items.Count];
    for (int i = 0; i < numbers.Length; i++)
    {
        numbers[i] = int.Parse(lstBubbleUnorderd.Items[i].ToString());
    }
    for (int y = 0; y < numbers.Length; y++)
    {
        for (int i = numbers.Length - 1; i > y; --i)
        {
            if (numbers[i] <= numbers[i - 1])
            {
                int temp = numbers[i];
                numbers[i] = numbers[i - 1];
                numbers[i - 1] = temp;
            }
        }
    }
    for (int j = 0; j < numbers.Length; j++)
    {
        lstBubbleOrderd.Items.Add(numbers[j]);
    }
    

    This will read any numbers that were entered into lstBubbleUnorderd into your numbers array, sort them, then print them out in lstBubbleOrderd.