我目前正在使用 Java 实现各种排序算法,主要是为了好玩,但我正在努力解决如何“正确”地做到这一点。也就是说,我希望用户能够在任何可比较的东西上调用选择的排序算法 - int
s、long
s、String
s、boolean
s(实际上,这些在 Java 中是否可比较?),他们自己的类;任何。问题是如何做到这一点。
我正在考虑使用一个类来表示排序算法,因此使用通用列表或其他任何东西()存储要排序的东西List<E>
。这也将允许我使用多个构造函数,从而允许用户以各种形式传入数据 - 列表、数组等。这是正确的方法吗?我目前的问题是我不希望用户在想要对某些东西进行排序时必须创建一个类,我宁愿它能够被称为类似System.out.println
或类似的东西。
// Example:
int[] myInts = {5,4,3,2,1};
// This is what I do *not* want.
InsertionSort mySort = new InsertionSort();
int[] sortedInts = mySort.sort(myInts);
// This is more like what I want.
int[] sortedInts = Sorting.insertionSort(myInts);
对于一个看似基本的问题,我深表歉意,但我只是在学习编程语言。对于在一家软件公司从事暑期工作的 2 年级计算机专业学生来说,这有点可笑,但您会惊讶于我的大部分工作只需要很少的编程知识……通常需要更多的设计知识。
编辑:
为了清楚起见,我的三个主要问题是:
- 是让用户创建一个类来进行排序,还是在用户导入的类中有一个静态方法更好?
- 是否可以轻松处理原始数据类型和通用对象?由于我希望能够处理任何实现可比较(或类似)的通用对象,因此这会导致原语出现问题(因为它们没有实现任何东西;))。
- 处理通用输入的最佳方法是什么 - 在尝试对它们进行排序之前我应该检查什么(例如,实现 Comparable)?