用.Net类库实现排序

排序是经常要用到的功能,遇到排序问题,第一感觉就是自己写排序算法,其实还可以用.Net类库实现排序功能。
如:SortedList,Array等,他们都能根据ICompare接口或者IComparable接口实现排序,像一些常用类型如:string,int都实现了IComparable接口。string 还有.net提供的ICompare的实现StringComparer类,此类提供了许多排序方式。
下面的例子用Array实现排序,虽然只是一个Int数组,但是其他复杂类型都可以用相同方法处理
None.gif   public   void  Sort()
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif            
int[,] i = new int[23dot.gifdot.gif123 }dot.gif456 } };
InBlock.gif            
int[] b = new int[6];
InBlock.gif            
for (int j = 0; j < i.GetLength(0); j++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
for (int k = 0; k < i.GetLength(1); k++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    
int l = i.GetLength(1);
InBlock.gif                    b[j 
* l + k] = i[j, k];
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif            ReverserSort ms 
= new ReverserSort();
InBlock.gif           Array.Sort(b,ms);
ExpandedBlockEnd.gif        }

None.gif    }
None.gif
None.gif   
None.gif 
None.gif   
public   class  ReverserSort:IComparer < int >  
ExpandedBlockStart.gifContractedBlock.gif   
dot.gif {
InBlock.gif     
InBlock.gif       
int IComparer<int>.Compare(int x, int y)
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif{
InBlock.gif           
return -(x - y);
ExpandedSubBlockEnd.gif       }

InBlock.gif
InBlock.gif     
ExpandedBlockEnd.gif   }
Sort()实现了由大到小的排序。排序的顺序通过IComparer接口规定。如果把返回值的“-”去掉,则按照由小到大的顺序。
实现ICompare接口是最灵活的排序实现。如果只是Int数组的排序,通过Array的Sort(),Reverse就可以了,Sort的无参重载会自动调用int的IComparable实现


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值