class employee
{
public string Name { get; private set; }//自动属性
public int Salary { get; private set; }//自动属性
/// <summary>
/// 构造函数
/// </summary>
/// <param name="name">姓名</param>
/// <param name="salary">收入</param>
public employee(string name,int salary)
{
Name = name;
Salary = salary;
}
/// <summary>
/// 判断两个雇员收入高低
/// </summary>
/// <returns></returns>
public static bool CompareMethod(employee e1,employee e2)
{
if (e1.Salary < e2.Salary) return true;
return false;
}
/// <summary>
/// ToString方法重写
/// </summary>
/// <returns></returns>
public override string ToString()
{
return Name + ":" + Salary;
}
}
class Program
{
static void Main(string[] args)
{
employee[] emp = new employee[]
{
new employee("zhang",2300),
new employee("wang",2500),
new employee("li",6854684),
new employee("yang",225),
new employee("liu",313),
new employee("ma",5488)
};
CommonSort<employee>(emp, employee.CompareMethod);
Console.ReadKey();
}
/// <summary>
/// 通过雇员收入,对雇员进行排序
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="dataSortArray">数组</param>
/// <param name="compareMethod">委托</param>
static void CommonSort<T>(T[] dataSortArray,Func<T,T,bool> compareMethod)
{
bool swapped = true;
do
{
swapped = false;
for (int j = 0; j < dataSortArray.Length - 1; j++)
{
if (!compareMethod(dataSortArray[j],dataSortArray[j+1]) )
{
T temp = dataSortArray[j];
dataSortArray[j] = dataSortArray[j + 1];
dataSortArray[j + 1] = temp;
swapped = true;//如果执行了判断语句中的内容,说明发生了交换,则swapped为true继续循环。
}
}
}
while (swapped);//如果某次循环结束没有发生交换,则终止循环
foreach (var item in dataSortArray)
{
Console.WriteLine($"{item } ");
}
}
}