private static void SelectSort(T[] arr) where T : IComparable { SelectSort(arr, 0, arr.Length - 1); } private static void SelectSort(T[] arr, int start, int end) where T : IComparable { while (start <= end) { var min = start; for (var i = start + 1; i <= end; i++) if (arr[i].CompareTo(arr[min]) < 0) min = i; if (min != start) Swap(arr, start, min); start++; } }
这样,各种各样的实现了 IComparable 接口的对象(整数和字符串都实现了它)就可以调用它。
如果你想自定义自己的比大小规则,你仅仅需要将比较大小方法作为方法参数传入,或者将对象封装到自定义的类型中(并且实现比大小接口),仍然可以调用这个排序程序。