Java快速排序-是否可以在不使用比较器的情况下比较对象?

Java快速排序-是否可以在不使用比较器的情况下比较对象?,java,quicksort,comparator,Java,Quicksort,Comparator,是否有一种方法可以同时对ArrayList中的数组元素进行快速排序 根据排序的数组更改数组列表的顺序,而不使用比较器功能 public ArrayList-ageSorter(ArrayList-pa){ if(pa.size()您可以在Java8中引入的List类上使用sort方法。 因此,您的方法如下: public List<PatientArray> ageSorter(ArrayList<PatientArray> pa) { pa.sort(Compar

是否有一种方法可以同时对
ArrayList
中的数组元素进行快速排序 根据排序的数组更改
数组列表的顺序,而不使用
比较器
功能

public ArrayList-ageSorter(ArrayList-pa){

if(pa.size()您可以在Java8中引入的List类上使用
sort
方法。 因此,您的方法如下:

public List<PatientArray> ageSorter(ArrayList<PatientArray> pa) {
   pa.sort(Comparator.comparingInt(a -> a.age));
   return pa;
}
public List ageSorter(ArrayList pa){
pa.sort(Comparator.comparingit(a->a.age));
返回pa;
}

您可以在Java 8中引入的列表类上使用
排序方法。
因此,您的方法如下:

public List<PatientArray> ageSorter(ArrayList<PatientArray> pa) {
   pa.sort(Comparator.comparingInt(a -> a.age));
   return pa;
}
public List ageSorter(ArrayList pa){
pa.sort(Comparator.comparingit(a->a.age));
返回pa;
}

避免使用
比较器的最简单方法是直接在快速排序代码中执行比较:

if (pa.get(i).age < middle.age)
if(pa.get(i).年龄<中年)
虽然您没有要求提供一般的评论,但我会注意到代码中有很多不必要的命令

public ArrayList<PatientArray> ageSorter(ArrayList<PatientArray> pa) {
    if (pa.size() <= 1) {
        return pa;
    }

    ArrayList<PatientArray> smaller = new ArrayList<PatientArray>();
    ArrayList<PatientArray> greater = new ArrayList<PatientArray>();

    PatientArray pivot = pa.get(0);
    for (int i = 1; i < pa.size(); i++) {
        if (pa.get(i).age < pivot.age) {
            smaller.add(j);
        } else {
            greater.add(j);
        }
    }
    smaller = ageSorter(smaller);
    greater = ageSorter(greater);
    smaller.add(middle);
    smaller.addAll(greater);
    return smaller;
}
public ArrayList-ageSorter(ArrayList-pa){

如果(pa.size()避免使用
比较器的最简单方法是直接在快速排序代码中执行比较:

if (pa.get(i).age < middle.age)
if(pa.get(i).年龄<中年)
虽然您没有要求提供一般的评论,但我会注意到代码中有很多不必要的命令

public ArrayList<PatientArray> ageSorter(ArrayList<PatientArray> pa) {
    if (pa.size() <= 1) {
        return pa;
    }

    ArrayList<PatientArray> smaller = new ArrayList<PatientArray>();
    ArrayList<PatientArray> greater = new ArrayList<PatientArray>();

    PatientArray pivot = pa.get(0);
    for (int i = 1; i < pa.size(); i++) {
        if (pa.get(i).age < pivot.age) {
            smaller.add(j);
        } else {
            greater.add(j);
        }
    }
    smaller = ageSorter(smaller);
    greater = ageSorter(greater);
    smaller.add(middle);
    smaller.addAll(greater);
    return smaller;
}
public ArrayList-ageSorter(ArrayList-pa){

如果(pa.尺寸()不完全确定您在问什么,但您的类实现Comparator这一事实是偶然的。该接口没有在您的示例中添加任何内容。
compare
可以是与
ageSorter
相同的类中的一个方法,或者您可以在if-statement中内联执行
a1.age-a2.age
。不完全确定您在做什么但是询问您的类实现Comparator这一事实是偶然的。该接口没有在您的示例中添加任何内容。
compare
可以只是与
ageSorter
在同一个类中的一个方法,或者您可以在if语句中内联执行
a1.age-a2.age
。我怀疑OP实际上想要实现QS算法她不仅仅是调用
sort
。是的,我想对我的数组列表应用快速排序算法,但不使用比较器来比较我的对象。我怀疑OP想实际实现QS算法,而不仅仅是调用
sort
。是的,我想对我的数组列表应用快速排序算法,但不使用比较器t比较我的目标,除了创建新的<代码> ARAYLIST/<代码>实例之外,使用(子)列表的第一个元素作为枢轴增加了在真实场景中遇到最坏情况的可能性。预处理数据。除了创建新的<代码> ARAYLIST/<代码>实例之外,使用(子)列表的第一个元素作为枢轴增加了在真实场景中遇到最坏情况的可能性。