Java 如何将选择排序转换为比较器接口?

Java 如何将选择排序转换为比较器接口?,java,sorting,comparator,selection-sort,Java,Sorting,Comparator,Selection Sort,以下是选择排序函数的代码: public class Selection { public static void sort (Comparable [] a) { //Sort [] into increasing order. int N = a.length; for (int i = 0; i < N; i++) { //Exchange a[i] with the smallest entry in a[i+1

以下是选择排序函数的代码:

public class Selection
{
    public static void sort (Comparable [] a)
    { //Sort [] into increasing order.
        int N = a.length;
        for (int i = 0; i < N; i++)
        {    //Exchange a[i] with the smallest entry in a[i+1...N).
             int min = i;
             for (int j = i+1; j < N; j++)
                if (less (a[j], a[min]) ) min = j;
             exch(a, i, min); // assume exch has been implemented already
        }
    }
}
公共类选择
{
公共静态无效排序(可比[]a)
{//按递增顺序排序[]。
int N=a.长度;
对于(int i=0;i
我被告知要在排序实现中支持比较器,我所要做的就是使用“Object”而不是“Comparable”,并将“Comparator”传递给“sort()”和“less()”并在“less”中使用它。 这是在比较器接口中制作的正确方法吗

public class Selection
{
    public static void sort (Object [] a, Comparator c)
    { //Sort [] into increasing order.
        int N = a.length;
        for (int i = 0; i < N; i++)
        {    //Exchange a[i] with the smallest entry in a[i+1...N).
             int min = i;
             for (int j = i+1; j < N; j++)
                if (less (c, a[j], a[min]) ) min = j;
             exch(a, i, min); 
        }
    }
}

private static booloean less (Comparator c, Object v, Object w)
{
    return c.compare(v, w) < 0; 
}

private static void exch (Object [] a, int i, int j)
{
    Object swap = a[i]; a[i] = a[j]; a[j] = swap; 
}
公共类选择
{
公共静态无效排序(对象[]a,比较器c)
{//按递增顺序排序[]。
int N=a.长度;
对于(int i=0;i
您所做的确实是一种推广算法的方法,因此它不仅适用于
可比较的
对象,而且适用于任意对象,通过使用
比较器
。代码中存在一些问题(例如,使用了原始类型),但您的更改可以描述为“实现预期目标所需的最小修改”。

你确定是谁告诉你的,实际上并不是这样的意思:java.util.array.sort(t[],java.util.Comparator)