【发布时间】:2014-05-03 16:21:55
【问题描述】:
我有一个数组列表。它在其中保留了arraylists。例如;
ar1 -> {2,3,46,67} keeps 4 members.
ar2 -> {28,96,67} keeps 3 members.
ar2 -> {56,32,67,54,214} keeps 5 members.
Ar_main[0]= ar1
Ar_main[1]= ar2
Ar_main[2]= ar3
我想按成员数对 ar_main 排序。我使用了冒泡排序算法。但是不行,我们不能像这种方法对arraylist进行排序吗?
private void sortArrayToAscending(ArrayList ar)
{
ArrayList ar1,ar2;
for (int i = 0; i < ar.Count - 1; i++)
for (int j = 1; j < ar.Count - i; j++)
{
ar1 = (ArrayList)ar[j];
ar2 = (ArrayList)ar[j-1];
if (ar1.Count < ar2.Count)
{
ArrayList temp = ar2;
ar2=ar1;
ar1=temp;
}
}
}
【问题讨论】:
-
您没有将 ar1/ar2 放回 ar。 ar1 和 ar2 只是本地引用。 ar 实际上并没有被修改。您需要将它们放在 ar 中的正确位置。
-
首先,停止使用
ArrayList。自 2005 年 11 月以来,任何用 .Net 编写的程序都不应使用它。请改用List<T>。完成此操作后,您可以使用 LINQ 让这变得非常简单:var sortedList = list.OrderBy(subList => subList.Count); -
谢谢。我看到了 :) 解决了问题 :)
标签: c# sorting arraylist bubble-sort