zoukankan      html  css  js  c++  java
  • 使用Func<T>对对象进行排序

    这种方法使用原理还是冒泡排序,但是他扩展的,不仅是对int类型的数据,也可以对其他的一些无法用“<”或“>”来进行排序的对象。

    代码如下:

    解决方案的名称:DelegateBubbleSorter

    BubbleSorter.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace DelegateBubbleSorter
    {
        class BubbleSorter
        {
            static public void Sort<T>(IList<T> sortArray, Func<T, T, bool> comparison)
            {
                bool swapped = true;
                do
                {
                    swapped=false;
                    for (int i = 0; i < sortArray.Count - 2; i++)
                    {
                        if (comparison(sortArray[i + 1], sortArray[i]))
                        {
                            T temp = sortArray[i];
                            sortArray[i] = sortArray[i + 1];
                            sortArray[i + 1] = temp;
                            swapped = true;
                        }
                    }
                }
                while(swapped);
            }
        }
    }

    Employee.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace DelegateBubbleSorter
    {
        class Employee
        {
            public string Name { get; private set; }
            public decimal Salary { get; private set; }
    
            public Employee(string name, decimal salary)
            {
                this.Name = name;
                this.Salary = salary;
            }
    
            public override string ToString()
            {
                return string.Format("{0},{1:C}", Name, Salary);
            }
    
            public static bool CompareSalary(Employee e1, Employee e2)
            {
                return e1.Salary < e2.Salary;
            }
        }
    }

    调用函数:Program.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace DelegateBubbleSorter
    {
        class Employee
        {
            public string Name { get; private set; }
            public decimal Salary { get; private set; }
    
            public Employee(string name, decimal salary)
            {
                this.Name = name;
                this.Salary = salary;
            }
    
            public override string ToString()
            {
                return string.Format("{0},{1:C}", Name, Salary);
            }
    
            public static bool CompareSalary(Employee e1, Employee e2)
            {
                return e1.Salary < e2.Salary;
            }
        }
    }

    源码都贴出来了,大家可以运行一把看看

    对WPF感兴趣的朋友可以直接跟我联系
    我个人QQ:1791786556
    讨论QQ群:
    WPF学习交流:699150554
    WPF/UI 界面开发:527847154
    WPF控件编程:699191787
  • 相关阅读:
    BZOJ3518 : 点组计数
    BZOJ2217 : [Poi2011]Lollipop
    李洪强经典面试题40-可能碰到的iOS笔试面试题-C语言
    对AFN的二次封装
    李洪强经典面试题39-iOS 程序员 6 级考试(答案和解释)
    iOS五种本地缓存数据方式
    iOS开发网络篇—数据缓存
    iOS中的通知
    李洪强漫谈iOS开发[C语言-048]-打印平方表
    李洪强漫谈iOS开发[C语言-047]-数列求和
  • 原文地址:https://www.cnblogs.com/zwzw/p/2842103.html
Copyright © 2011-2022 走看看