Java 使用数组列表进行快速排序

Java 使用数组列表进行快速排序,java,arraylist,quicksort,Java,Arraylist,Quicksort,我正在尝试使用ArrayLists实现快速排序。但是,我不知道如何创建一个包含所有整数的Arraylist。我觉得有一种方法可以让我轻松做到这一点。这是我的密码 public static ArrayList<Integer> quicksort(ArrayList<Integer> arr, int min, int max) { int pivot = (min + max)/2; if (arr.size() <= 1) { r

我正在尝试使用
ArrayLists
实现快速排序。但是,我不知道如何创建一个包含所有整数的
Arraylist
。我觉得有一种方法可以让我轻松做到这一点。这是我的密码

public static ArrayList<Integer> quicksort(ArrayList<Integer> arr, int min, int max) {
    int pivot = (min + max)/2;
    if (arr.size() <= 1) {
        return arr;
    }
    else {
        ArrayList<Integer> less = new ArrayList<Integer>();
        ArrayList<Integer> greater = new ArrayList<Integer>();
        for (int i : arr) {
            if ( i < arr.get(pivot)) {
                less.add(i);
            }
            else {
                greater.add(i);
            }
        }
        return quicksort(less, min, pivot) + arr.get(pivot) + quicksort(greater, pivot + 1, max);
    }
}
公共静态ArrayList快速排序(ArrayList arr、int-min、int-max){
整数轴=(最小+最大)/2;

如果(arr.size()您可以使用
addAll()

List result=new ArrayList(小于.size()+大于.size()+1);
结果:addAll(更少);
结果:添加(枢轴);
结果:addAll(更大);

您可以创建一个方法来为您合并
列表

private List<Integer> mergeLists(List<Integer> list1, Integer element, List<Integer> list2) {
    List<Integer> mergedList = new ArrayList<>();
    mergedList.addAll(list1);
    mergedList.add(element);
    mergedList.addAll(list2);
    return mergedList;
}
请注意,这只是一个示例,您可以根据需要修改它。我最初有一个
List
vararg
,但发现它在这种情况下没有用处

如果您希望合并两个以上的列表(仅相同类型的列表),则可以执行类似操作

private List<Integer> mergeLists(List<Integer>... lists) {
    List<Integer> mergedList = new ArrayList<>();
    for (List<Integer> list : lists) {
        mergedList.addAll(list);
    }
    return mergedList;
}
私有列表合并列表(列表…列表){
List mergedList=new ArrayList();
用于(列表:列表){
mergedList.addAll(列表);
}
返回合并列表;
}
用这样的方法

List<Integer> combinedList = mergeLists(list1, list2, list3, list4);
List combinedList=mergeLists(列表1、列表2、列表3、列表4);

@TejaswiRana它将
less
中的所有值相加,然后将
pivot
中的所有值相加,然后将
greater
中的所有值相加。你能详细说明什么是不清楚的,或者你在问什么吗?我不确定我是否理解你的问题。
private List<Integer> mergeLists(List<Integer>... lists) {
    List<Integer> mergedList = new ArrayList<>();
    for (List<Integer> list : lists) {
        mergedList.addAll(list);
    }
    return mergedList;
}
List<Integer> combinedList = mergeLists(list1, list2, list3, list4);