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