【发布时间】:2017-04-03 19:55:15
【问题描述】:
目前用户可以在 ListBox 中输入数字,并且我希望 ListBox 在单击排序检查按钮时按下面的冒泡排序进行排序。但是,它只输出索引号,例如0,1,2,3...我不允许仅使用 items 属性以及解析和转换的任何数组或容器。
private void sorted()
{
int a = Convert.ToInt32(lstHoldValue.Items.Count);
int temp;
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));
}
}
【问题讨论】:
-
好吧,最后你清除你的列表,然后开始将索引从 i 添加到 a。最后一个 for 循环到底想做什么?
-
您正在清除列表框(因此在此过程中会丢失它的值)并添加循环索引(最后一个循环中的
i);还有Items.Count已经是int,不需要转换 -
我认为算法也是错误的-冒泡排序意味着只要您不更改顺序就可以查看集合;您正在循环收集一次,然后在集合的内部循环中休息 - 它似乎不是冒泡排序的正确实现。
-
是的,抱歉,我的本意是要删除 clear() 行。如果我这样做,它只会显示索引号 0,1,2,3,.. 等。我只是不确定如何在不使用任何容器或数组的情况下对列表框进行排序,只使用列表框项属性。跨度>
标签: c# winforms bubble-sort