需要帮助来创建一个c#bubblesort。我到目前为止有什么问题?

时间:2012-07-30 20:07:02

标签: c# sorting quicksort bubble-sort

我正在尝试使用冒泡排序,在c#中将数字从最小到最大排序,到目前为止我的错误是什么?

private void Order_Click(object sender, EventArgs e) {
  value1 = Convert.ToInt32(textBox1.Text);
  value2 = Convert.ToInt32(textBox2.Text);
  value3 = Convert.ToInt32(textBox3.Text);
  value4 = Convert.ToInt32(textBox4.Text);
  value5 = Convert.ToInt32(textBox5.Text);

  int[] myarray = { value1, value2, value3, value4, value5 };
  int n = 0;
  bool swapped = true;
  int j = 0;
  int tmp;
  while (swapped) {
    swapped = false;
    j++;
    for (int i = 0; i < n - j; i++)
    {
      if (myarray[i] > myarray[i + 1]) {
        tmp = myarray[i];
        myarray[i] = myarray[i + 1];
        myarray[i + 1] = tmp;
        swapped = true;
        order1.Text = Convert.ToString(myarray[0] + "," + 
                                       myarray[1] + "," + 
                                       myarray[2] + "," + 
                                       myarray[3] + "," + 
                                       myarray[4]);
       }
     }
   }
 }

3 个答案:

答案 0 :(得分:1)

您的代码首先出现的问题是:

for (int i = 0; i < n - j; i++)

您的支票i < n - j永远不会让控件陷入循环。因为你已经将n初始化为0并且j是1(在j ++之后),所以i不会小于-1,因此你的循环将无法按预期工作。由于您将swapped设置为false,因此控件将脱离while循环,因此不会进行排序。

您需要将代码更改为:

  while (swapped)
            {
                swapped = false;
                for (int i = 0; i < myarray.Length - 1; i++)
                {
                    if (myarray[i] > myarray[i + 1])
                    {
                        int t = myarray[i];
                        myarray[i] = myarray[i + 1];
                        myarray[i + 1] = t;
                        swapped = true;
                        Console.WriteLine(Convert.ToString(myarray[0] + "," + myarray[1] + "," + myarray[2] + "," + myarray[3] + "," + myarray[4]));
                    }

                }

            }

答案 1 :(得分:0)

nj变量似乎没必要。将nj退出程序,并在for循环中执行此操作:

 for (int i = 0; i < (array1.Length - 1); i++)

答案 2 :(得分:-2)

冒泡排序

using System;  

class AscendingBubbleSort 
{     
    public static void Main()
    {
        int i = 0,j = 0,t = 0;
        int []c=new int[20];
        for(i=0;i<20;i++)
        {
            Console.WriteLine("Enter Value p[{0}]:", i);
            c[i]=int.Parse(Console.ReadLine());
        }
        // Sorting: Bubble Sort
        for(i=0;i<20;i++)
        {
            for(j=i+1;j<20;j++)
            {
                if(c[i]>c[j])
                {
                    Console.WriteLine("c[{0}]={1}, c[{2}]={3}", i, c[i], j, c[j]);
                    t=c[i];
                    c[i]=c[j];
                    c[j]=t;
                }
            }
        }
        Console.WriteLine("Here comes the sorted array:");
        // Print the contents of the sorted array
        for(i=0;i<20;i++)
        {
            Console.WriteLine ("c[{0}]={1}", i, c[i]);
        }
    }
}

source