In Following Code , What will occur in Sort Method Of Main method , Does it contain a loop on it?
I have found it uses QuickSort Algorithm but How it Sort By Compare Function?
class Products
{
public string Name { get; private set; }
public decimal Price { get; private set; }
public Products(string name,decimal price)
{
Name = name;
Price = price;
}
public Products()
{
}
public static List<Products> GetSampleProducts()
{
return new List<Products>()
{
new Products{Name = "Company",Price=1800},
new Products{Name = "Assassins",Price=2800},
new Products{Name = "Zrogs",Price=1300},
new Products{Name = "Swenney Todd",Price=1300}
};
}
public override string ToString()
{
return string.Format("{0} price is {1}", Name, Price);
}
}
class ProductComparer : IComparer<Products>
{
public int Compare(Products x, Products y)
{
return x.Name.CompareTo(y.Name);
}
}
class Program
{
static void Main(string[] args)
{
Products products = new Products();
List<Products> lst_products = Products.GetSampleProducts();
lst_products.Sort (new ProductComparer());
foreach (Products p in lst_products)
{
Console.WriteLine(p);
}
Console.ReadKey();
}
}
Thanks…
In general it uses Array.Sort() method and comparer you’ve provided to compare each next two items whilst sorting uisng QuickSort algorithm.
Funny animated QuickSort:
Visualization of the quicksort algorithm. The horizontal lines are pivot values:

EDIT:
Below are methods which actually does QuickSort using provided comparer (QuickSort, SwapIfGreaterWithItems)