public static bool IsSorted <T>(T[] pi, int lo, int hi, CompareToHandler <T> compareTo) { for (int k = lo; k < hi; ++k) { if (IsGreaterThan(pi[k], pi[k + 1], compareTo)) { return(false); } } return(true); }
private static bool IsGreaterThan <T>(T i, T j, CompareToHandler <T> compareTo) { if (compareTo != null) { return(compareTo(i, j) > 0); } if (i is IComparable && j is IComparable) { return((i as IComparable).CompareTo((j as IComparable)) > 0); } else { throw new NotImplementedException(); } }
public static int Compare <T>(T i, T j, CompareToHandler <T> compareTo) { if (compareTo != null) { return(compareTo(i, j)); } if (i is IComparable && j is IComparable) { return((i as IComparable).CompareTo((j as IComparable))); } else { throw new NotImplementedException(); } }