对StringCollection进行排序

对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);
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值