如何对天空数组进行排序并从按钮初始化数组?

时间:2011-12-02 16:21:35

标签: c#-3.0

我想为sky-l-i-n-e编写一个程序。起初我给了x,然后是高度,然后是宽度。例如(1,2,3)将存储 sky[0,0,0]和x = 1,身高= 2,宽度= 3。 你的建议是什么?我知道其他人都写过这个,但我想有另一种方式。用户将决定图表的分数。 Actor会给出数字,然后我会按x对数据进行排序,因为x是重要的参数。

排序部分不起作用。有什么问题?

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    public static int [,]sortedsky=new int[1,1];
    public static int row;
    public static int x = 0;
    public static int [,]sky=new int[1,1];

    public static int charrsize(int i, int j)
    {
        int [,]a=new int [i,j];
        sky = a;
        sortedsky =sky;
        return 1;

    }

    public static int sort(int [,]a,int i)
    {
        int y=0;
        sky = a;
        int min=0;

        int tx=0;
        int th=0;
        int tx2 = 0;
        int low=0;

        for (int f = 0; f<i; f++)
        {
            low++;

            tx= sky[low,0];
            th= sky[low,1];
            tx2=sky[low,2];

            sky[low,0]=sky[min,0];
            sky[low,1]=sky[min,1];
            sky[low,2]=sky[min,2];

            sky[min,0]=tx;
            sky[min,1]=th;
            sky[min,2]=tx2;

            min = f;

            for (y = 0; y < i-1; y++)
                if (sky[y+1, 0] < sky[min, 0])
                    min = y+!;
        }

        return 1;          
    }

    private void button1_Click(object sender, EventArgs e)
    {
         row =int.Parse (textBox4 .Text );
         charrsize(row, 3);
    }

    private void textBox3_TextChanged(object sender, EventArgs e)
    { }

    public  void textBox4_TextChanged(object sender, EventArgs e)
    { }

    private void button2_Click(object sender, EventArgs e)
    {
        textBox1.Text =  x.ToString ();

        if (x<row)
        {
            //here is my problem:
            sky[x, 0] = int.Parse(txtx.Text);
            sky[x, 1] = int.Parse(txth.Text);
            sky[x, 2] = int.Parse(txtx2.Text);
        }
        else
        {
            MessageBox.Show("enough! it was the last");
            sort(sky, row);
        }

        x++;
    }

    private void Form1_Load(object sender, EventArgs e)
    { }

    private void label2_Click(object sender, EventArgs e)
    { }
}

1 个答案:

答案 0 :(得分:0)

我终于找到了答案。

        for (int i = 0; i < a.GetUpperBound(0); i++)
        {
            int min = i;
            for (int j = i + 1; j <= a.GetUpperBound(0); j++)
            {
                if (a[min, 0] > a[j, 0])
                {
                    min = j;
                }
            }
            for (int j = 0; j <= a.GetUpperBound(1); j++)
            {
                int t = a[min, j];
                a[min, j] = a[i, j];
                a[i, j] = t;
            }

            sky = a;
            int r = 1;
            return 0;


        }