public static T[] SortByStrategy <T>(this T[] list, ICompareStrategy <T> compare) { if (list == null || compare == null) { throw new ArgumentException("list can't be null"); } for (int i = 1; i < list.Count(); i++) { for (int j = i; j < list.Count(); j++) { //自訂一個規則介面,比較方式由外部提供 由外部注入!! if (compare.Compare(list[i - 1], list[j]) > 0) { Swap(list, j, i); } } } return(list); }
public static IEnumerable <T> SortBy <T>(this T[] list, ICompareStrategy <T> compare) { if (list == null || compare == null) { throw new ArgumentException("list can't be null"); } for (int i = 1; i < list.Count(); i++) { for (int j = i; j < list.Count(); j++) { if (compare.Compare(list[i - 1], list[j]) > 0) { T temp = list[j]; list[j] = list[i - 1]; list[i - 1] = temp; } } } return(list); }