使用委托升级冒泡排序

使用委托升级冒泡排序
        #region 使用委托升级冒泡排序
        //创建一个排序方法 加上<T>表示这个方法是泛型
        //参数  :   (泛型数组     ,   Func委托<泛型参数,泛型参数,返回值为布尔类型>方法名)
        public static void Sort< T >(T[] data, Func<T, T, bool > ComparSalary)
        {
            bool swapped = true ; //swapped为true的时候交换
            do
            {
                swapped = false ;
                for ( int i = 0; i < data.Length - 1; i++)
                {
                    if (ComparSalary(data[i], data[i + 1])) //调用方法
                    {
                        T temp = data[i];
                        data[i] = data[i + 1];
                        data[i + 1] = temp;
                        swapped = true ;
                    }
                }
            } while (swapped);
        }
        static void Main( string [] args)
        {
            //初始化员工类构造函数的数组
            Employee[] employees =
            {
               new Employee( "小铃" , 20000),
               new Employee( "小悠" , 10000),
               new Employee( "小梦" , 25000),
               new Employee( "罗娴" , 100000),
               new Employee( "嫣然" , 23000),
               new Employee( "洛神" , 50000)
            };
            Sort<Employee>(employees, Employee.ComparSalary); //调用排序方法
            foreach (Employee e in employees)
            {
                Console.WriteLine( $" {e.Name} : {e.Salary} " );
            }
        }
        internal class Employee //员工类
        {
            private string name; //员工姓名
            private double salary; //员工薪水
            public Employee ( string name, double salary) //创建一个构造函数
            {
                this .name = name;
                this .salary = salary;
            }
            public string Name { get => name; private set => name = value; }
            public double Salary { get => salary; private set => salary = value; }
            //创建一个函数来比较构造函数的大小
            public static bool ComparSalary(Employee e1, Employee e2)
            {
                return e1.salary > e2.Salary; //比较薪水
            }
        }
        #endregion
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值