dinghao

记录成长点滴

 

用.Net类库实现排序

排序是经常要用到的功能,遇到排序问题,第一感觉就是自己写排序算法,其实还可以用.Net类库实现排序功能。
如:SortedList,Array等,他们都能根据ICompare接口或者IComparable接口实现排序,像一些常用类型如:string,int都实现了IComparable接口。string 还有.net提供的ICompare的实现StringComparer类,此类提供了许多排序方式。
下面的例子用Array实现排序,虽然只是一个Int数组,但是其他复杂类型都可以用相同方法处理
 public void Sort()
        
{

            
int[,] i = new int[23123 }456 } };
            
int[] b = new int[6];
            
for (int j = 0; j < i.GetLength(0); j++)
            
{
                
for (int k = 0; k < i.GetLength(1); k++)
                
{
                    
int l = i.GetLength(1);
                    b[j 
* l + k] = i[j, k];
                }

            }

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

    }

   
 
   
public class ReverserSort:IComparer<int> 
   
{
     
       
int IComparer<int>.Compare(int x, int y)
       
{
           
return -(x - y);
       }


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


posted on 2006-10-18 15:42  思无邪  阅读(1599)  评论(0编辑  收藏  举报

导航