C# MergeSort数组-C语言中的部分排序解决方案#

C# MergeSort数组-C语言中的部分排序解决方案#,c#,C#,这是我的任务: “程序还应显示数组的部分排序解决方案。这些部分步骤应清楚显示算法如何对数组元素进行排序。” 我可以显示未排序和已排序的数组,但我需要知道如何显示(显示)所需的部分步骤 我的代码是: namespace MergeSort { public partial class Main : Form { public Main() { InitializeComponent(); }

这是我的任务: “程序还应显示数组的部分排序解决方案。这些部分步骤应清楚显示算法如何对数组元素进行排序。” 我可以显示未排序和已排序的数组,但我需要知道如何显示(显示)所需的部分步骤

我的代码是:

namespace MergeSort
{
    public partial class Main : Form
    {
        public Main()
        {
            InitializeComponent();
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void btnExecute_Click(object sender, EventArgs e)
        {
            String arrayLength;
            int num;

            // InputBox functionality used for user to enter the size of an array to be sorted.
            arrayLength = Interaction.InputBox("Enter a number that represent the length of array", "Enter Legth Of Array");
            try
            {
                while (!(int.TryParse(arrayLength, out num)))
                {
                    MessageBox.Show("Not a valid number!\r\nPlease try again!");
                    arrayLength = Interaction.InputBox("Enter a number that represent the length of array", "Enter Legth Of Array");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Value entered is not a valid format!", ex.Message);
            }
            int intLength = int.Parse(arrayLength);

            string[] stringArray = new string[intLength];
            int arrayPosition = 0;
            int positionValue = 1;

            //To display unsorted array
            txtOutput.Text += "Unsorted array: \r\n";
            foreach (string s in stringArray)
            {
                // InputBox functioanlity to prompt user to enter the text (string) into the arrary to be sorted.
                string value = Interaction.InputBox("Enter the string in the array to be sorted" + positionValue, "Enter the string ");
                stringArray[arrayPosition] = value.ToString();

                txtOutput.Text += value + "\t";
                arrayPosition++;
                positionValue++;
            }

            //To display sorted array
            txtOutput.Text += "\r\nSorted array: \r\n";
            mergeSort(stringArray, 0, stringArray.Length - 1);

            foreach (string s in stringArray)
            {
                txtOutput.Text += s + "\t";
            }
            txtOutput.Text = txtOutput.Text + "\r\n";


            //To display each step
            foreach (string s in stringArray)
            {
                txtOutput.Text += ("\r\nValue at position " + " " + Array.IndexOf(stringArray, s)+ "  " + "is" + "  " + s + "\r\n");
            }
        }

        public void mergeSort (string[] sortArray, int lower, int upper)
        {
            int middle;

            if (upper == lower)
                return;
            else
            {
                middle = (lower + upper) / 2;
                mergeSort(sortArray, lower, middle);
                mergeSort(sortArray, middle + 1, upper);
                Merge(sortArray, lower, middle + 1, upper);
            } 
        }

        public void Merge(string[] sortArray, int lower, int middle, int upper)
        {
            string[] temp = new string[sortArray.Length];
            int lowEnd = middle - 1;
            int low = lower;
            int n = upper - lower + 1;

            while ((lower <= lowEnd) && (middle <= upper))
            {
                if (sortArray[lower].CompareTo(sortArray[middle]) < 1)
                {
                    temp[low] = sortArray[lower];
                    low++;
                    lower++;
                }
                else
                {
                    temp[low] = sortArray[middle];
                    low++;
                    middle++;
                }
            }

            while (lower <= lowEnd)
            {
                temp[low] = sortArray[lower];
                low++;
                lower++;
            }

            while (middle <= upper)
            {
                temp[low] = sortArray[middle];
                low++;
                middle++;
            }

            for (int i = 0; i < n; i++)
            {
                sortArray[upper] = temp[upper];
                upper--;
            }
        }

    }
}
名称空间合并排序
{
公共部分类Main:表单
{
公用干管()
{
初始化组件();
}
私有void btnExit\u单击(对象发送者,事件参数e)
{
Application.Exit();
}
私有void btnExecute\u单击(对象发送者,事件参数e)
{
字符串排列长度;
int-num;
//InputBox功能,用于用户输入要排序的数组的大小。
arrayLength=Interaction.InputBox(“输入表示数组长度的数字”,“输入数组长度”);
尝试
{
而(!(int.TryParse(arrayLength,out num)))
{
MessageBox.Show(“不是有效的数字!\r\n请重试!”);
arrayLength=Interaction.InputBox(“输入表示数组长度的数字”,“输入数组长度”);
}
}
捕获(例外情况除外)
{
MessageBox.Show(“输入的值不是有效格式!”,例如Message);
}
int intLength=int.Parse(arrayLength);
string[]stringArray=新字符串[intLength];
int-arrayPosition=0;
int positionValue=1;
//显示未排序的数组的步骤
txtOutput.Text+=“未排序的数组:\r\n”;
foreach(stringArray中的字符串s)
{
//InputBox功能,提示用户在要排序的数组中输入文本(字符串)。
string value=Interaction.InputBox(“在要排序的数组中输入字符串”+positionValue,“输入字符串”);
stringArray[arrayPosition]=value.ToString();
txtOutput.Text+=值+“\t”;
数组位置++;
位置值++;
}
//显示已排序数组的步骤
txtOutput.Text+=“\r\n已选数组:\r\n”;
mergeSort(stringArray,0,stringArray.Length-1);
foreach(stringArray中的字符串s)
{
txtOutput.Text+=s+“\t”;
}
txtOutput.Text=txtOutput.Text+“\r\n”;
//显示每个步骤
foreach(stringArray中的字符串s)
{
txtOutput.Text+=(“+”“+Array.IndexOf(stringArray,s)+”“+”位置的“\r\n值是“+”“+s+”\r\n”);
}
}
公共void合并排序(字符串[]sortArray,整数下限,整数上限)
{
中间;
如果(上==下)
返回;
其他的
{
中间=(下部+上部)/2;
合并排序(sortArray、下、中);
合并排序(sortArray,中间+1,上部);
合并(sortArray,下,中+1,上);
} 
}
public void Merge(字符串[]sortArray,int-lower,int-middle,int-upper)
{
string[]temp=新字符串[sortArray.Length];
int lowEnd=中间-1;
int低=较低;
int n=上-下+1;

而((对于移动数组元素的排序算法中的每个步骤,请在移动后重新显示数组。这是我的代码,只是想确保我正确理解问题,而不是在代码之后,只是在一条建议之后。谢谢Kevin,这就是我需要澄清的全部内容。