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)