public static void SelectionSort <T>(IList <T> collection) where T : IComparable <T> { Console.Write("Selection sort for {0} with {1} elements:\t", typeof(T).Name, collection.Count); T temp; int counter, index, min, arrayCount = collection.Count; List <T> innerList = new List <T>(collection); SortingAlgorithmTester.DisplayExecutionTime(() => { for (counter = 0; counter < arrayCount - 1; counter++) { min = counter; for (index = counter + 1; index < arrayCount; index++) { if (innerList[index].CompareTo(innerList[min]) < 0) { min = index; } } temp = innerList[counter]; innerList[counter] = innerList[min]; innerList[min] = temp; } }); }
public static void Quicksort <T>(IList <T> collection, int left, int right) where T : IComparable { Console.Write("Quicksort for {0} with {1} elements:\t", typeof(T).Name, collection.Count); SortingAlgorithmTester.DisplayExecutionTime(() => { GetQuicksortResult(collection, left, right); }); }
public static void InsertionSort <T>(IList <T> collection) where T : IComparable <T> { Console.Write("Insertion sort for {0} with {1} elements:\t", typeof(T).Name, collection.Count); int counter, index, listCount = collection.Count; List <T> innerList = new List <T>(collection); SortingAlgorithmTester.DisplayExecutionTime(() => { for (counter = 1; counter < listCount; counter++) { T value = innerList[counter]; index = counter - 1; while ((index >= 0) && (innerList[index].CompareTo(value) > 0)) { innerList[index + 1] = innerList[index]; index--; } innerList[index + 1] = value; } }); }