对StringCollection进行排序
StringCollection类对应于Delphi中的TStringList类,但是同TStringList类相比,缺少了排序的功能,为此我写了一个方法,可以对StringCollection进行排序。
//对StringCollection进行排序
public static void Sort(StringCollection Strs,bool CaseSensitive) {
IComparer comparer=null;
if (CaseSensitive)
comparer=Comparer.DefaultInvariant;
else
comparer=CaseInsensitiveComparer.DefaultInvariant;
QuickSort(Strs, 0, Strs.Count - 1, comparer);
}
private static void QuickSort(StringCollection Strs, int L,int R, IComparer comparer) {
while (true) {
int I = L;
int J = R;
int P = (L + R) / 2;
while (true) {
while (comparer.Compare(Strs[I], Strs[P]) < 0)
I++;
while (comparer.Compare(Strs[J], Strs[P]) > 0)
J--;
if (I <= J) {
ExchangeStrings(Strs, I, J);
if (P == I)
P = J;
else if (P == J)
P = I;
I++;
J--;
}
if (I > J)
break;
}
if (L < J)
QuickSort(Strs, L, J, comparer);
L = I;
if (I >= R)
break;
}
}
//交换字符串的位置
public static void ExchangeStrings(StringCollection Strs, int I, int J ) {
string si=Strs[I];
string sj=Strs[J];
Strs.RemoveAt(I);
Strs.Insert(I,sj);
Strs.RemoveAt(J);
Strs.Insert(J,si);
}