当前位置:  编程技术>.net/c#/asp.net

经典的委托排序(深入分析)

    来源: 互联网  发布时间:2014-10-22

    本文导语:  对于数值型的排序我们都已经司空见惯了,但我们有时候希望我们的Sort()方法能够给任何对象排序,比如某段客户机代码包含Currency结构数组或其他的类和结构,就需要对该数组排序。这里我们使用委托并封装这个方法进行比...

对于数值型的排序我们都已经司空见惯了,但我们有时候希望我们的Sort()方法能够给任何对象排序,比如某段客户机代码包含Currency结构数组或其他的类和结构,就需要对该数组排序。这里我们使用委托并封装这个方法进行比较。

排序我们还是使用经典的冒泡排序,如果数据量较大你可以换为你自己的更高效的排序算法。

先给出整个代码:

代码如下:

public class BubbleSorter
{
 public static void Sort(object[] sortArray, CompareOperation gtMethod)
 {
  for (int i = 0; i < sortArray.Length; i++)
  {
   for (int j = 0; j < sortArray.Length; j++)
   {
    if (gtMethod(sortArray[j], sortArray[i]))
    {
     object tmp = sortArray[i];
     sortArray[i] = sortArray[j];
     sortArray[j] = tmp;
    }
   }
  }
 }
}
public class Employee
{
 private string name;
 private decimal salary;
 public Employee(string name, decimal salary)
 {
  this.name = name;
  this.salary = salary;
 }
 public override string ToString()
 {
  return string.Format(name.PadRight(20) + "{0:C}", salary);
 }
 public static bool RSalaryIsGreater(object lObj, object rObj)
 {
  Employee lEmployee = lObj as Employee;
  Employee rEmployee = rObj as Employee;
  return rEmployee.salary > lEmployee.salary;
 }
}

再给一个调用示例:
代码如下:

public delegate bool CompareOperation(object lObj, object rObj);
class Program
{
 static void Main(string[] args)
 {
  Employee[] employees =
  {
   new Employee("Tommy",20000),
   new Employee("Elmer",10000),
   new Employee("Daffy", 25000),
   new Employee("Wiley",1000000),
   new Employee("Foghorn",23000),
   new Employee("RoadRunner",50000),
  };
  CompareOperation employeeCompareOperation = new CompareOperation(Employee.RSalaryIsGreater);
  BubbleSorter.Sort(employees, employeeCompareOperation);
  for (int i = 0; i < employees.Length; i++)
  {
   Console.WriteLine(employees[i].ToString());
  }
 }
}


    
 
 

您可能感兴趣的文章:

  • C经典冒泡排序法实现代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • j2ee架构最经典的例子是什么?petstore算是最经典的例子吗?
  • 请大家推荐几个经典的JAVA网站!!(经典者给分)
  • THING IN JAVA 第二版(中文版) 已经出炉了!!(经典的不能再经典了)
  • 经典board游戏 Domination
  • linux有没有像--《windows程序设计》一样经典的书籍
  • 在Linux下开发有哪些经典的书籍值得看
  • 大家帮推荐本 linux下多线程编程 的经典书吧 多谢
  • 求unix经典书籍
  • 求LINUX经典书籍
  • 谁知道经典的DOS游戏去哪里下载?
  • Wii经典街机iPhone移植版 SpaceBubble
  • java中最经典的书是什么
  • 大家能否推荐几个学习java的经典例子?
  • 请前辈介绍一本jsp+数据库的经典好书!!!
  • 请你推荐一本给初学者的jsp经典好书!!!
  • 请问哪一本LINUX源代码分析的书比较经典?
  • 我想系统的学习LINUX,有一订的计算机基础。可以推荐一本经典教材吗?
  • 请教学习c++有那些经典书籍?
  • 请各位大侠推荐两本Solaris的经典书籍?
  • <自己写操作系统>这本书电子版那位有啊?据说很经典的


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3