using System;
delegate bool Comparator(object lhs, object rhs);
class MainEntryPoint {
static void Main() {
Employee [] employees = {
new Employee("A", 20000),
new Employee("B", 10000),
new Employee("C", 25000),
new Employee("D", 99999),
new Employee("E", 23000),
new Employee("F", 50000)};
BubbleSorter.Sort(employees, new Comparator(Employee.IsGreater));
for (int i=0 ; i<employees.Length ; i++){
Console.WriteLine(employees[i].ToString());
}
}
}
class Employee {
private string name;
private decimal salary;
public Employee(string name, decimal salary)
{
this.name = name;
this.salary = salary;
}
public override string ToString()
{
return string.Format(name + ", {0:C}", salary);
}
public static bool IsGreater(object a, object b)
{
Employee empA = (Employee) a;
Employee empB = (Employee) b;
return (empA.salary > empB.salary) ? true : false;
}
}
class BubbleSorter
{
static public void Sort(object [] sortArray, Comparator gtMethod) {
for (int i=0 ; i<sortArray.Length ; i++) {
for (int j=i+1 ; j<sortArray.Length ; j++) {
if (gtMethod(sortArray[j], sortArray[i])) {
object temp = sortArray[i];
sortArray[i] = sortArray[j];
sortArray[j] = temp;
}
}
}
}
}
|