使用委托升级冒泡排序
#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