Bubble sort
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; } } } } }