升级冒泡排序:比较工资(string+int)
给员工写一个单独的类:
internal class Employee
{
public string Name { get; private set; }
public double Salary { get; private set; }
public Employee(string name, double salary)
{ Name = name ; Salary = salary; }
public static bool Compare(Employee e1, Employee e2)
{
return e1.Salary > e2.Salary;//.Salary就是按工资比较
//.Name就是按名字比较
}
}
=======================================================
class Program//主程序的类
{
//T代表任意类型的数据类型
//这两个T,代表两个Employee类型的数据
public static void Sort<T>(T[] data, Func<T, T, bool> compare)
{
bool swapped = true;
do
{
swapped = false;
for (int i = 0; i < data.Length - 1; i++)
{
if(compare(data[i],data[i+1]))
{
T temp = data[i];//因为数据是T类型,所以这里不能是int,必须是T
data[i] = data[i + 1];
data[i + 1] = temp;
swapped = true;
}
}
} while (swapped);
}
static void Main(string[] args)//主函数
{
Employee[] employees = {
new Employee("Sunny",20000),
new Employee("John",10000),
new Employee("Bob",13000),
new Employee("Tom",18300),
new Employee("Michael",23000),
new Employee("lisa",31000),
};
Sort<Employee>(employees,Employee.Compare);
foreach (Employee emp in employees)
{
Console.WriteLine(emp.Name+":"+emp.Salary);
}
}
}