![](/img/trans.png)
[英]Bubble Sort Algorithm being used for a listbox in Windows Forms C#?
[英]Bubble sort for Listbox not working C#
我有一個程序,用戶可以在其中輸入用戶也可以得到的列表框中輸入數字,並可以對列表框進行排序。 我不允許使用任何數組或容器或列表,只需修改項目列表框屬性並使用轉換和解析即可。 我想通過氣泡排序來做到這一點,盡管單擊排序按鈕后僅在列表框中顯示的數字是0、1、2、3、4 ...
private void sorted()
{
int a = Convert.ToInt32(lstHoldValue.Items.Count);
int temp = Convert.ToInt32(lstHoldValue.Items[0]);
for (int i = 0; i < a; i++)
{
for (int j = i + 1; j < a; j++)
{
if (Convert.ToInt32(lstHoldValue.Items[i]) > Convert.ToInt32(lstHoldValue.Items[j]))
{
temp = Convert.ToInt32(lstHoldValue.Items[i]);
(lstHoldValue.Items[i]) = Convert.ToInt32(lstHoldValue.Items[j]);
(lstHoldValue.Items[j]) = temp;
}
}
}
lstHoldValue.Items.Clear();
for (int i = 0; i < a; i++)
{
Convert.ToInt32(lstHoldValue.Items.Add("\t" + i));
}
}
用戶如何向列表框中輸入值
private void btnAdd_Click(object sender, EventArgs e)
{
string text = "\t" + txtInitialise.Text;
if (this.index < MAX_ITEMS) // MAX_ITEMS or 10
{
Convert.ToInt32(lstHoldValue.Items.Count);
int dnum;
if (int.TryParse(txtInitialise.Text, out dnum))
{
Convert.ToInt32(lstHoldValue.Items.Add( "\t" + dnum));
index++;
txtInitialise.Text = "";
似乎您只是將List項目的索引添加到List,這就是它總是返回0-4(5個元素)的原因。 將答案更新為僅使用列表項進行排序。
更新:
允許插入列表框的最大項目數:
const int MAX_ITEMS = 10;
盡管最后清除了列表框,但排序后的方法仍能正常工作,因此您失去了排序功能,因為使用for循環在列表框內進行了交換:
private void sorted()
{
int a = Convert.ToInt32(lstHoldValue.Items.Count);
int temp = Convert.ToInt32(lstHoldValue.Items[0]);
for (int i = 0; i < a; i++)
{
for (int j = i + 1; j < a; j++)
{
if (Convert.ToInt32(lstHoldValue.Items[i]) > Convert.ToInt32(lstHoldValue.Items[j]))
{
temp = Convert.ToInt32(lstHoldValue.Items[i]);
(lstHoldValue.Items[i]) = "\t" + Convert.ToInt32(lstHoldValue.Items[j]);
(lstHoldValue.Items[j]) = "\t" + temp;
}
}
}
}
單擊添加按鈕:
private void btnAdd_Click(object sender, EventArgs e)
{
int index = 0;
if (index < MAX_ITEMS) // MAX_ITEMS set to 10
{
int dnum;
if (int.TryParse(txtInitialise.Text, out dnum))
{
lstHoldValue.Items.Add("\t" + dnum);
index++;
txtInitialise.Text = "";
}
}
}
排序按鈕單擊:
private void btnSort_Click(object sender, EventArgs e)
{
sorted();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.