1

私はrandomsorting方法で働いています。これまでのところ、線形メソッドが機能しています。、、 などlinear、使用する並べ替えの種類をユーザーが決定できるようにする方法を実装しようとしています。Keyに選択された値がある場合、ソート配列はその特定のソート方法を実行します。値に基づいて特定のソート方法を実行するにはどうすればよいですか? 以下は、Windowsフォームをセットアップする方法の写真ですbubbleindextextBox7Keybutton3textbox7button2Key

コード

namespace sortmachine
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();

        }


        Stopwatch sw = new Stopwatch();


        Random r = new Random();

        private int size = 0;
        private int max = 0;
        private int ops = 0;
        private int[] ar1;
        private int[] ar2;
        private int[] ar3;

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                size = Convert.ToInt32(textBox2.Text);
                max = Convert.ToInt32(textBox3.Text);
                string s = "";

                ar1 = new int[size];
                ar2 = new int[size];
                ar3 = new int[size];

                for (int i = 0; i < size; i++)
                {
                    int n = r.Next(0, max);
                    ar1[i] = n;
                    ar2[i] = ar1[i];
                }

                for (int i = 0; i < size; i++)
                {
                    s += ar1[i].ToString() + " ";
                }
                listView1.Items.Add(s);
            }
            catch
            {
                MessageBox.Show("Please input information");
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            int min = max;
            int n = 0;
            string s="";

            sw.Start();

            for (int j = 0; j < size; j++)
            {
                for (int i = 0; i < size; i++)
                {
                    if (min > ar2[i])
                    {
                        min = ar2[i];
                        n = i;
                        ops++;
                    }
                    if (min < ar2[i])
                    {
                        ops++;
                    }

                }
                ar2[n]=max;
                ar3[j] = min;
                min = max;
                s += ar3[j] + " ";
            }

            TimeSpan x = sw.Elapsed;
            textBox5.Text = x.ToString();

                listView2.Items.Add(s);
                listView2.Text = s;
                textBox6.Text = Convert.ToString(ops);
                if (checkBox1.Checked==true)
                {
                    textBox1.AppendText(s+Environment.NewLine);
                }
                for (int i = 0; i < size; i++)
                {
                    ar2[i] = ar1[i];
                }
                ops = 0;

        }

    }
}
4

3 に答える 3

1

コンボボックスまたはDropDownListを使用して並べ替えオプションを保存し、SelectedTextプロパティを使用して、ユーザーが[並べ替え]をクリックしたときに使用する並べ替え方法を決定することをお勧めします。

コンボボックスをフォームにドラッグするだけです。次に、[アイテムの編集]をクリックして値を入力し、アイテムを追加します。

次に、コードで行うのは、次のようなものを書くことだけです。

string sortOption = comboBox1.SelectedText;
于 2012-10-24T03:01:06.563 に答える
1

他の人が提案していたことを実装するので、これを試してみてください:

each if conditional 内では、ソート タイプごとに独自のロジックを実行できます。ご覧のとおり、並べ替え用のリストに番号を追加するための他のボタンと、結果を表示するためのコントロールを含むコンボボックスから並べ替えオプションを選択しています。

スクリーンショットのコードは次のとおりです。

if(comboBox1.SelectedItem.ToString() == "Linear")
{
}
else if (comboBox1.SelectedItem.ToString() == "Bubble")
{            
}
else if (comboBox1.SelectedItem.ToString() == "Index")
{
}

ここに画像の説明を入力

于 2012-10-24T03:43:33.830 に答える
1

RadioButtonリストを使用して並べ替えオプションを選択し、キー値アプローチではなくユーザーが必要とする並べ替えを決定する方法はどうですか。

一度に1 つの選択のみを許可するRadioButtonsものを内部に配置するだけで、[並べ替え] ボタンをクリックすると、それぞれのプロパティをチェックして並べ替えを適用できます。GroupBoxRadioButtonCheckedRadioButton

if (rdoBtnQuick.Checked)
    // Apply Quick Sort
else if (rdoBtnSelection.Checked)
    // Apply Selection Sort
else if (rdoBtnBubble.Checked)
    // Apply Bubble Sort
//...
于 2012-10-24T03:28:54.087 に答える