C# 增加通过次数
我想增加通过次数,但到目前为止我的输出显示的格式不正确。例如,我输入了5个数字,比如54321。格式为: 通过1:14325C# 增加通过次数,c#,sorting,selection,increment,C#,Sorting,Selection,Increment,我想增加通过次数,但到目前为止我的输出显示的格式不正确。例如,我输入了5个数字,比如54321。格式为: 通过1:14325 通过2:14325 通过3:12345 通过4:12345 通过5:12345 但我目前的输出是: 通过1:2:3:4:5:14325 通过1:2:3:4:5:14325 通过1:2:3:4:5:12345 通过1:2:3:4:5:12345 通过1:2:3:4:5:12345 我一直在使用for循环语句。任何想法我将如何做这种输出。我正在做一个快速排序 int[
通过2:14325
通过3:12345
通过4:12345
通过5:12345 但我目前的输出是: 通过1:2:3:4:5:14325
通过1:2:3:4:5:14325
通过1:2:3:4:5:12345
通过1:2:3:4:5:12345
通过1:2:3:4:5:12345 我一直在使用for循环语句。任何想法我将如何做这种输出。我正在做一个快速排序
int[] nums = new int[100];
int SizeNum;
bool isNum = false;
private void ExeButton_Click(object sender, EventArgs e)
{
string SizeString = SizeTextBox.Text;
isNum = Int32.TryParse(SizeString, out SizeNum);
string[] numsInString = EntNum.Text.Split(' '); //split values in textbox
for (int j = 0; j < numsInString.Length; j++)
{
nums[j] = int.Parse(numsInString[j]);
}
if (SizeNum == numsInString.Length)
{
sortArray();
}
}
}
public void q_sort(int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = nums[left];
while (left < right)
{
while ((nums[right] >= pivot) && (left < right))
{
right--;
}
if (left != right)
{
nums[left] = nums[right];
left++;
}
while ((nums[left] <= pivot) && (left < right))
{
left++;
}
if (left != right)
{
nums[right] = nums[left];
right--;
}
}
nums[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
Display();
if (left < pivot)
{
q_sort(left, pivot - 1);
}
if (right > pivot)
{
q_sort(pivot + 1, right);
}
}
public void sortArray()
{
q_sort(0, SizeNum - 1);
}
public void Display()
{
int i;
int x;
String numbers = "";
ResultText.AppendText("Pass ");
for (x = 1; x < SizeNum; x++)
{
ResultText.AppendText(" " + x + ": ");
}
for (i = 0; i < SizeNum; i++)
{
numbers += nums[i].ToString() + " , ";
}
ResultText.AppendText(numbers + "\n");
}
int[]nums=newint[100];
int SizeNum;
bool-isNum=false;
私有void ExeButton_单击(对象发送者,事件参数e)
{
string SizeString=SizeTextBox.Text;
isNum=Int32.TryParse(SizeString,out SizeNum);
字符串[]numInstalling=EntNum.Text.Split(“”);//在文本框中拆分值
对于(int j=0;j=pivot)和&(left
最简单的方法是通过快速排序函数传递调试变量,以跟踪当前状态,例如:
public void q_sort(int left, int right, int currentPass)
{
/* ... */
Display(currentPass);
/* ... */
q_sort(left, pivot - 1, currentPass + 1);
q_sort(pivot + 1, right, currentPass + 1);
/* ... */
}
public void Display(int currentPass)
{
ResultText.AppendText("Pass " + currentPass);
// output the array contents as you currently do
}
您的SizeNum始终为5,因此显示中的循环:
for (x = 1; x < SizeNum; x++)
{
ResultText.AppendText(" " + x + ": ");
}
(x=1;x
{
ResultText.AppendText(“+x+”:”);
}
将始终打印1-5。您需要以某种方式让Display知道它被调用了多少次,以便获得正确的标签。在类的顶部添加
int Pass=0;
然后在显示例程中替换
for (x = 1; x < SizeNum; x++)
{
ResultText.AppendText(" " + x + ": ");
}
由于您的代码看起来可以多次运行,您可能希望在SortArray()中重置Pass=1;让我们先看看for循环:
for (x = 1; x < SizeNum; x++)
{
ResultText.AppendText(" " + x + ": ");
}
你的问题很不清楚-你所说的“通过次数”根本不清楚。但是currentPass不会为家长更新,因此不会持续增加?
for (x = 1; x < SizeNum; x++)
{
ResultText.AppendText(" " + x + ": ");
}
private void Display(int pass)
// initialise your other variables here
ResultText.AppendText("Pass " + pass + ": ");
// output your array as normal here