gpt4 book ai didi

java - 如何使通用快速排序方法对数组列表中的对象正确运行

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:18:25 25 4
gpt4 key购买 nike

我正在尝试完成一个使用通用快速排序方法对对象数组列表进行排序的程序,我终于摆脱了我熟悉的所有常见错误,但我的程序仍然无法正确排序。当我只对字符串进行排序时,我使用了类似的算法,但它不是通用的,所以我不确定我哪里出错了。请帮忙!这是我一直在使用的以下快速排序代码:

private static <E> void doQuickSort(ArrayList <E> list, int start, int end)
{
if(list == null || list.size() == 0)
return;
if(start >= end)
return;

int middle = start + (end - start) / 2;
E pivot = (E) list.get(middle);

int s = start, e = end;
while (s <= e)
{
while(pivot.equals(list.get(s)))
{
s++;
}

while(pivot.equals(list.get(e)))
e--;


if(s <= e)
{
E temp = list.get(s);
list.set(s, list.get(e));
list.set(e, temp);
s++;
e--;
}


if(start < e)
doQuickSort(list, start, e);
if(end > s)
doQuickSort(list, s, end);
}
}

最佳答案

字符串是可比较的,因此您可以将 compareTo 与字符串一起使用。当您将其设为通用时,您没有指定通用元素必须是 Comparable,并且从您的代码中您不再使用 compareTo。如果使用 equals 而不是 compareTo,则无法确定哪些元素出现在哪些其他元素之前。因此,您没有对任何东西进行排序。

关于java - 如何使通用快速排序方法对数组列表中的对象正确运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40209900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com