我想创建一个标签数组,并根据标签中的值使用插入排序对它们进行排序



我从5个文本框中获取输入,并通过将它们放入标签并移动标签来排序插入文本框中的值,直到其中的值被排序。

到目前为止,我已经把它们放入标签中,但我不知道如何移动标签上的按钮点击,让标签移动来排序。

这是模拟插入排序算法的一种方法。

我的代码到目前为止的按钮点击:

private void button1_Click(object sender, EventArgs e)
{
    if (comboBox1.SelectedItem.ToString() == "insertion sort")
    {  
        for ( i = 0; i < 5; i++)
        {
            if (c != 0)
            {
                myLabel[i].Dispose();
            }
            myLabel[i] = new Label();
            myLabel[i].Location = new Point(a, b);
            myLabel[i].Width = 70;
            myLabel[i].Height = 70;
            myLabel[i].BackColor=Color.White;
            myLabel[i].BorderStyle = BorderStyle.FixedSingle;
            panel1.Controls.Add(myLabel[i]);
            a = a + 100;
            myLabel[i].Visible = true;
        }
        timer1.Start();
        c++;
    }
    myLabel[0].Text = textBox1.Text;
    myLabel[1].Text = textBox5.Text;
    myLabel[2].Text = textBox4.Text;
    myLabel[3].Text = textBox3.Text;
    myLabel[4].Text = textBox2.Text;
}

public partial class Form1 : Form
{   
    Label[] myLabel=new Label[5];
    int a = 30;         //x coordinates of first label in label1 array
    int b = 125;        //y coordinates of first label in label1 array
    int c = 0;
    int k = 0;
    int n = 0;
    int j = 1;
    int i;
    public Form1()
    {
        InitializeComponent();
        comboBox1.Items.Add("Selection Sort");
        comboBox1.Items.Add("Insertion Sort");
    }

您需要对文本框的值进行排序,然后将值放入标签中。像这样:

 private void button1_Click(object sender, EventArgs e)
    {
        if (comboBox1.SelectedItem.ToString() == "insertion sort")
        {  
            for ( i = 0; i < 5; i++)
            {
                if (c != 0)
                {
                    myLabel[i].Dispose();
                }
                myLabel[i] = new Label();
                myLabel[i].Location = new Point(a, b);
                myLabel[i].Width = 70;
                myLabel[i].Height = 70;
                myLabel[i].BackColor=Color.White;
                myLabel[i].BorderStyle = BorderStyle.FixedSingle;
                panel1.Controls.Add(myLabel[i]);
                a = a + 100;
                myLabel[i].Visible = true;
            }
            timer1.Start();
            c++;
        }
                var list = new List<KeyValuePair<string, string>>();
                list.Add(new KeyValuePair<string, string>(textBox1.Text, textBox1.Text.Value));
                list.Add(new KeyValuePair<string, string>(textBox2.Text, textBox2.Text.Value));
                list.Add(new KeyValuePair<string, string>(textBox3.Text, textBox3.Text.Value));
                list.Add(new KeyValuePair<string, string>(textBox4.Text, textBox4.Text.Value));
                list.Add(new KeyValuePair<string, string>(textBox5.Text, textBox5.Text.Value));
                list.Sort(Compare2);
                int increment = 0;
                foreach(var item in list)
                {                
                    myLabel[increment].Text=item.Value;
                    increment++;
                }           
    }

static int Compare2(KeyValuePair<string, string> a, KeyValuePair<string, string> b)
        {
            return a.Value.CompareTo(b.Value);
        }

最新更新